CS2002 Software Development and Management

 

Module Code And Title : CS2002 Software Development and Management

Introduction

The complexities and complexities of managing distant project activities are greater than those of conventional (co-located) development. The primary reason mentioned by scholars and practitioners seems to be that open-source operating introduces new different factors and challenges to the often complicated situation of software maintenance: physiological and regional separation within and between teams, historical and psychological disparities within and between people, different cities, and so forth, all of which implications teamwork and coordination, problem – solving abilities, trust, and a number of other conditions that affect the success of a project. Software development success is determined by three criteria: functionality, security, and responsiveness. Application is designed to carry out a certain purpose. The aim of software development will just be undermined unless it becomes competent in executing this role successfully. Customers should be pleased with the system’s quality. The program must be provided on hand to meet customers (as scheduled). A punitive clause is frequently related to the supply of software, as the customer is anticipated to experience significant business failures if they do not implement modifications in their platform on time. Unfortunately, project delays not just incur costs due to penalties, but then there is the risk of increasing the cost of goods and services over time (price expansion), losing image, and spending opportunity costs.

Key concepts of Software engineering

Component-based software engineering

Component-based software engineering (CBSE) seems to be a computer programming methodology that assembles components to create software applications that match specific business needs in order to expedite software development and increase software recyclability and management. Components models and constituent frameworks are essential criteria that allow components to really be connected and function together (Akbar et al. 2019). Module models define the guidelines and standards that should be followed by components throughout component construction and communication. The components framework offers an infrastructure for both design and execution time. Important lines of science within CBSE encompass and are therefore not constrained to, QoS (Quality of Service) dedication and specification, the certainty of malfunctioning properties, component interruption, and practice activities including component classification, proof of identity and collection, component acclimation, testing, and implementation methodologies (Bhujang et al. 2018). Though CBSE has shown to be effective for software maintenance and supportability, it should not solve every one of the problems that software developers face today, including such different platforms, different protocols, different devices, the same Internet, so on and so forth. To overcome these difficulties, the business software engineering methodology has arisen.

Modules in CBSE are laying the foundations that may be implemented separately and are susceptible to third-party composition. According to Clemens Szyperski’s definition, an application software seems to be an element of composition that only has contractually established protocols and unambiguous context assumptions. It may be both quite well and coarse-grained, with fine-grained offering better functionality while coarse-grained incorporating sophisticated concepts. In CBSE, the element specification defines the module’s interfaces, i.e. the activities and situational requirements, for such clients. Additionally, an abstracted specification of the underlying structure of the model is supplied for the component suppliers.

Service-based software engineering

Service-oriented software engineering (SOSE) is a software engineering methodology that attempts to facilitate the creation of distributed systems that are quick, minimal, and straightforward to compose, even in heterogeneous contexts (Bider et al. 2018). It makes use of services as key building blocks for designing applications and systems. Service underpinnings, a person has made, service administration and management, and business engineering are all important fields of research throughout SOSE. Service underpinnings offer service-oriented technological devices that facilitate managed service-oriented architecture and link disparate services and applications. Those mass communications provide communications amongst organizations and individual requesters; typically differ in terms of service description approaches and message features. Service composition includes the roles or functionalities required to support configuration management. SOSE’s dynamic compositional method makes QoS a significant problem. Various projects, including orchestra and choreography, have evolved. The monitoring system of SOA-based systems throughout their life cycle is referred to as systems integration.

Services seem to be the foundation elements of SOSE that may have been repeated and provide certain functionality. They are often implemented as course eventually publicly available software organizations that operate on bigger data sets by wrapping business activity and exposing it to any source that demands it via a well-defined interface (Borrego et al. 2019). As a result, the capabilities may be repurposed and accessed at different levels of both the corporate application, as well as beyond organizational borders.

An instruction to meet in SOSE is a contractual arrangement that provides the additional data: I service functionality – stating this same service’s philosophical purpose and anticipated results; (ii) browser – going to describe the service annotations of a series of commands that seem to be readily accessible for admonition to the users perspective; (iii) behavior – going to describe the expected behavior of a customer experience throughout its implementation; and (iv) reliability – standard factors functional requirement customer satisfaction attributes.

Software modeling

Software design is the technique of designing program methods, events, entities, as well as the basic components and interface of a software program, in order for the final performance to meet the needs of its consumers. Try to write specifications on their Capabilities site (Efe et al. 2019). There are several approaches to software development, virtually which all entail creating an original proposal and modifying it as needed. Various programmers prefer varying levels of styling upfront or even during the execution process. When beginning coding, the overall architecture should be thoroughly planned out and approved (Fujdiak et al. 2019). Discover how and where to critique any design in our Style reviews area. It is simpler to experiment out various models early in the software programming and find difficulties than it would be to implement a big design modification after most of the software has indeed been produced.

An explanation of the general framework should be included in the software development. It should cover the technology, database, and 3rd party platforms with which the applications will interface. This is the overall image of what’s going on and how everything will intersect.

Every Application Programming Interfaces (API) utilized by the code or by other applications which access the code must be included in the program architecture. The right specification of all these APIs is critical since it is exceedingly challenging to modify them even before they have been agreed upon and utilized without disrupting a large amount of other individuals ‘s work. It does not imply implementing a scientific principle or procedure in software when designers say “software modeling.” That was what researchers have historically referred to as a software system. What scientists imply by software modeling there is more than just an approach or a particular approach (Galeano et al. 2020). The whole programming code, involving displays, interaction with some other program, as well as all software procedures, should be addressed using software modeling.

Software frameworks are methods of communicating software development. Typically, an abstraction language or images are employed to represent the program development. An object modeling language, like UML, is being used to construct and represent the program layout in object-oriented technology. Users may create the UML diagram using a variety of tools.

In virtually all circumstances, a modeling language is being used to build the architecture rather than just capturing it when it is finished. This enables the architect to experiment with many designs before deciding on the best one for the ultimate result. Consider constructing the program in the same way as users might in a residence. To begin, do a basic design of the square footage and space and ground arrangement (Haq et al. 2019). The sketch is the modeling language, and the design that results is a representation of the ultimate design. Users will keep modifying the designs till users have a style that works all of the needs. Only after that should individuals begin chopping panels or creating code.

The process of developing software systems started with two major activities: project planning and system modeling (López et al. 2018). The requirements engineering serves a dual purpose: it provides a detailed understanding of the situation and it reduces the possibility of mistakes caused by confusing demands. The goal of system modeling is to describe a program’s overall structure by dissecting everything into the functional blocks. Many researchers have been focusing their efforts on developing strategies to facilitate these two tasks. There seem to be two approaches to accomplish the objectives among those two actions (Maassen et al. 2018). The first involves explicitly specifying and analyzing systems, whereas the second involves intuitively describing and modeling systems. They chose a terminology that can officially express the attributes of a crucial and complicated system for describing, modeling, and evaluating its behavior. Good command of English assists us in specifying system attributes in a clear, precise, and detailed manner (Maher et al. 2020). And for its ease of fabrication in displaying dynamic system behaviors, as well as its great communicative and analytic capacity of system behavior, the Client/server network is perhaps the most extensively employed in numerous application fields. Considering formal techniques’ tremendous capabilities, developers are likely to notice a lack of formal approaches while evaluating and modeling systems from many disciplines.

Unified Modeling Language

The Unified Modeling Language (UML) is an architecture formalism series that would be quickly gaining the de facto software architecture language. UML offers the program architect with a number of valuable features, like various, interconnected model perspectives, sub semantics represented like a UML modeling tool, and a connected terminology for putting informal logic restrictions on layout parts. The major purpose of this study is to evaluate UML’s descriptive ability for modeling software infrastructures in the way that many software system architecture description languages (ADLs) describe systems. A UML modeling of a software program is made up of numerous complete forms, which each tackles a specific set of challenges at a different level of accuracy (Mahmudova et al. 2018). UML frameworks use a range of graphics to handle a range of design flaws: (1) modules and their announced aspects, transactions, and connections; (2) the conceivable nations and behavior of specific classes; (3) packages of classes and their interrelations; (4) instance circumstances of technology adoption such as types of customer and interactions among task scheduling; (5) the behavior of the general organization in the form of an application situation; (6) instances of data items with exact characteristics and interactions in the frame of reference of a situation; and (7) instances of data objects with real qualities and connections in the sense of a situation.

Software Architecture

Software architecture is a branch of computer programming that aimed at trying to develop sizable, complicated applications in a way that minimizes operating costs, increasing the possibility for similarity among representatives of a strongly linked product group, and enables progression, potentially at framework runtime (Melegati et al. 2019). The primary part of architectural style software engineering has changed away from code lines and toward coarse grind structural pieces, high-level relationships, and general interconnectivity structure. This allowed users to abstract away superfluous details and concentrate on the “big picture”—system design, high-level protocols, system software and connection assignment to servers, design phases, and etc. The fundamental idea of system design study is that great software products may be produced by modeling their essential architectural characteristics all through the lifecycle, particularly early on. Two judgments that underpin system design studies include are features to represent as well as how to assess them. Until now, the system design scientific world has mostly concentrated on empirical examination of physical specifications. Many experts feel that in order to reap the advantages of a specific design emphasis, system design can have its unique set of definition tools and evaluation methodologies. Such languages are required to specify and evaluate system attributes early in the design process, reducing the expenses of finding and correcting problems ( Oyong et al. 2019). The systems must also give suitable representations for modeling a big system while providing sufficient information for identifying features of interest. Many interface definition languages have indeed been suggested.

Use case diagram

A use case map is a graphical depiction of how a user interacts with a system. Its paradigm uses use cases and actors to illustrate how a system operates. A use case is a set of methods, services, and activities that are necessary to execute software (Prakash et al. 2019). There are two types of use case diagrams. During the creation of applications, use case diagrams are quite useful. On the one side, whenever program customers view use case diagrams, they may determine if the software program meets their needs and it is at the start of software design. Their comments about something like a system may be immediately addressed to demand designers, who can then make the appropriate adjustments to the predictions shown. Before writing code, users may assess the system behavior using use case diagrams (Przybylek et al. 2018). Use case diagrams, but at the other side, may be utilized as templates throughout the software development life cycle. Additional software engineers, including such model architects and inspectors, might utilize all use case diagrams to better build and verify the software application. The first is a graphical component, while the second is a written description. The diagram section depicts the link between use cases and participants (Saeed et al. 2019). The linguistic summary section provides an informal explanation of every use case. The majority of comments are provided in colloquial language, like English. Although UML permits any degree of formalism for use cases, we believe that a higher level of formalities may prevent a lot of uncertainty and miscommunication among software consumers and enterprises. Reducing uncertainty and miscommunication may be extremely beneficial in increasing quality assurance.

CS2002 Software Development and Management 1Figure 1: Use case diagram (Source: Self-created in visual paradigm enterprise)

Class diagram

In UML, a class diagram is an establishment of a comprehensive that is used to depict a system’s design. It stresses the many classes which the platform may have, as well as their properties, specialized activities, or the connections that have evolved among some of the program’s components. Structure diagrams depict the basic design of the organization under consideration. Concentrating on the parts of a system regardless of time the program’s static model is supported by displaying the kinds and associated occurrences.

Structure diagrams, in addition to depicting types of systems and cases, reveal at least a few of the interactions within as well as between these components, and may even illustrate their underlying structure. Structure diagrams are beneficial for a number of members of the team all through the software lifecycle. In principle, these models enable personal and team design evaluation and interaction. Class or object diagrams, for instance, can be used by industry experts to describe a company’s actual resources and assets, including such financial ledgers, goods, or regional structure. Architects can utilize elements and release models to check the soundness of their solution. Class diagrams can be used by designers to build and record the program’s coding classes (Saleem et al. 2019). A class is represented by a rectangle with three divisions layered upwards in UML. The name of the class is shown in the top section. The properties of the class are listed in the center container. The activities of the class are listed in the bottom section. The top section must be used when creating a class component on a class diagram, whereas the lower two divisions are allowed. The bottom two would’ve been superfluous in a diagram illustrating a greater level of detail, where the goal is to demonstrate simply the connection between both the classifiers.

CS2002 Software Development and Management 2Figure 2: Class diagram (Source: Self-created in visual paradigm enterprise)

Sequence diagram

A sequence diagram depicts the activities of items in a structure in chronological order across time. Event diagrams and context diagrams are other names for sequence diagrams. The graphic depicts how items in the network communicate with one another and whether items are engaged at any one time. The sequence diagram is generally used to depict the connections between items in the manner in which they arise. Designers, such as class diagrams, frequently believe sequence diagrams are to be exclusive to them. Sequence diagrams, on the other hand, might be valuable to an enterprise’s business personnel in communicating how well the industry presently operates by displaying how a variety of business items connect (Sievi et al. 2019).

A marketing sequence diagram is used as a requirements specification to express needs for a prospective implementation project, in addition to describing an organization’s existing affairs. Experts can consider taking use cases towards the next level during the requirements stage of a project by supplying a more structured level of sophistication. When this happens, the use cases are frequently developed within one or even more sequence diagrams. Among the most common use of sequence diagrams is to migrate from functional reporting as use cases to another more explicit level of development.

Typically, use cases are developed as one or even more sequence diagrams. Aside from being used to develop new networks, sequence diagrams may also be leveraged to explain how items in a current (or “historical”) government system communicate. A sequence diagram’s principal aim is to describe sequences that arrive at an intended goal. The emphasis is mostly on the communications directly and more on preceding text; nonetheless, typical sequence diagrams will express what both signals are exchanged between a device’s objects and the sequence in which they take place. The graphic displays this data in two aspects: the dimension displays the temporal series of communications as they happen from top to bottom, and the horizontal line depicts the instances to whom the messages are transmitted from side to side.

CS2002 Software Development and Management 3Figure 3: Sequence diagram (Source: Self-created in visual paradigm enterprise)

Real-world problem solving

In the last two decades, multi-objective evolutionary algorithms have now been progressively used to handle a wide range of ecological challenges. This is due to the fact that they all have an amount of benefits over far more conventional optimization techniques methods including such linear regression, mathematical programming, and nonlinear programming, such as the potential to be connected with current simulation, the able to handle with numerous conflicting goals, the potential to accommodate to non-linearity, in homogeneities, and integer parameters, and the potential to create a variety of remedies that are comparable in image space but differ in execution. MOEAs have gained significant traction in the realm of water supplies, wherein they have shown to be a versatile and strong tool for identifying near-global optimum exchange between competing goals for a wide range of applications.

Although obtaining stakeholder feedback is a key part of conceiving and addressing real-world optimization issues, doing so in reality is not something the researchers participating in the optimization phase are normally experienced with. As a result, this section discusses some of the concerns that must be addressed before beginning the procedure of stakeholder involvement. Stakeholder involvement is required for formalized optimization of real-world issues to guarantee that the challenge being addressed fulfills as many stakeholder requirements and demands as feasible and produces realistic, usable, and wide acceptance. It is often a governmental framework, planning tool approach, and the requirement for statistical information from the public restricts the possibility for connecting with their life worlds. These criteria imply that in the setting under consideration, a practical, systematic planning strategy with limited interaction is most suitable. Nonetheless, designers would suggest that the function of the administrative 8 structure (e.g., government organizations) must be made plain, and feedback from important stakeholder groups inside the administrative structure, which may involve the analysts them self, must be acquired.

Conclusion

There are two basic ideologies that guide software development methodologies: heavyweight and lightweight. Heavyweight techniques are appropriate for projects in which objectives are expected to shift and software intricacy enables for comprehensive preparation. Heavyweight techniques are simple to grasp and use. They provide reliable information and appeal to program owners since they are well enough and highlight tangible outcomes for each step of the design. The project leader may easily undertake tracking, assessment, and reporting using heavyweight approaches. Only during the planning and research stages is the project manager heavily involved. Lightweight techniques are appropriate for projects when specifications are ambiguous or are expected to change owing to internally or externally project circumstances. Lightweight techniques are built on an iterative algorithm in which software is supplied in several iterations, each of which is a fully working edition of the program. Lightweight techniques offer a high degree of flexibility and are quickly adaptable to change.

Reference List

Journal

Akbar, M.A., Shafiq, M., Kamal, T. and Hamza, M., 2019. Towards the successful requirements change management in the domain of offshore software development outsourcing: Preliminary results. International Journal of Computing and Digital Systems, 8(03), pp.205-215.

Bhujang, R.K. and Suma, V., 2018. A Comprehensive Solution for Risk Management in software development projects. International Journal of Intelligent Systems Technologies and Applications, 17(1-2), pp.153-175.

Bider, I., Otto, H. and Willysson, S., 2018. Using a Socio-Technical Model of a Global Software Development Project for Facilitating Risk Management and Improving the Project Structure. Complex Systems Informatics and Modeling Quarterly, (15), pp.1-23.

Borrego, G., Morán, A.L., Palacio, R.R., Vizcaíno, A. and García, F.O., 2019. Towards a reduction in architectural knowledge vaporization during agile global software development. Information and Software Technology, 112, pp.68-82.

Efe, P. and Demirors, O., 2019. A change management model and its application in software development projects. Computer Standards & Interfaces, 66, p.103353.

Fujdiak, R., Mlynek, P., Mrnustik, P., Barabas, M., Blazek, P., Borcik, F. and Misurec, J., 2019, June. Managing the secure software development. In 2019 10th IFIP International Conference on New Technologies, Mobility and Security (NTMS) (pp. 1-4). IEEE.

Galeano-Ospino, S., Machuca-Villegas, L. and Gasca-Hurtado, G.P., 2020, October. Knowledge transfer in software development teams using gamification: A systematic literature review. In International Conference on Software Process Improvement (pp. 115-130). Springer, Cham.

Haq, S.U., Gu, D., Liang, C. and Abdullah, I., 2019. Project governance mechanisms and the performance of software development projects: Moderating role of requirements risk. International Journal of Project Management, 37(4), pp.533-548.

López, L., Partanen, J., Rodríguez, P. and Martínez-Fernández, S., 2018, August. How practitioners manage quality requirements in rapid software development: A Survey. In 2018 IEEE 1st International Workshop on Quality Requirements in Agile Projects (QuaRAP) (pp. 14-17). IEEE.

Maassen, M.A., 2018. Opportunities and risks of the agile software development management in the IT field. Case study: IT companies between 2009-2018. Revista de Management Comparat Internațional, 19(3), pp.234-243.

Maher, Z.A., Shah, A., Chan-dio, S., Mohadis, H.M. and Rahim, N.H.B.A., 2020. Challenges and limitations in secure software development adoption-A qualitative analysis in Malaysian software industry prospect. Indian Journal of Science and Technology, 13(26), pp.2601-2608.

Mahmudova, S., 2018. Methods of organizing the technological process of software development. Rev Inf Eng Appl, 5(1), pp.1-11.

Melegati, J., Wang, X. and Abrahamsson, P., 2019, May. Hypotheses Engineering: first essential steps of experiment-driven software development. In 2019 IEEE/ACM Joint 4th International Workshop on Rapid Continuous Software Engineering and 1st International Workshop on Data-Driven Decisions, Experimentation and Evolution (RCoSE/DDrEE) (pp. 16-19). IEEE.

Oyong, S.B. and Ekong, V.E., 2019. An explorative survey of formal and agile software development methods. Global Journal of Pure and Applied Sciences, 25(1), pp.71-79.

Prakash, B. and Viswanathan, V., 2019. Distributed cat modeling based agile framework for software development. Sādhanā, 44(7), pp.1-11.

Przybylek, A. and Kowalski, W., 2018, September. Utilizing online collaborative games to facilitate Agile Software Development. In 2018 Federated Conference on Computer Science and Information Systems (FedCSIS) (pp. 811-815). IEEE.

Saeed, S., Jhanjhi, N.Z., Naqvi, M. and Humayun, M., 2019. Analysis of Software Development Methodologies. International Journal of Computing and Digital Systems, 8(5), pp.446-460.

Saleem, N., Mathrani, S. and Taskin, N., 2019. Investigating Critical Success Factors of Project Management in Global Software Development: A Work in Progress. In CONF-IRM (p. 3).

Sievi-Korte, O., Beecham, S. and Richardson, I., 2019. Challenges and recommended practices for software architecting in global software development. Information and Software Technology, 106, pp.234-253.

 

Know more about UniqueSubmission’s other writing services:

Assignment Writing Help

Essay Writing Help

Dissertation Writing Help

Case Studies Writing Help

MYOB Perdisco Assignment Help

Presentation Assignment Help

Proofreading & Editing Help

Leave a Comment