Module- II SRM University, Delhi- NCR, Sonepat, Haryana. Software Engineering: A Layered Technology
Software Engineering is a layered
technology. It is the application of principles used in the field of engineering, which usually deals with physical systems, to the design, development, testing, deployment and management of systems. Software Engineering: A Layered Technology The main objective of software engineering layers is to help software developers obtain high-quality software. There are four types of layers in Software Engineering such as – Tools, methods, process, A quality focus. Software Engineering: A Layered Technology 1. A quality focus: It defines the continuous process improvement principles of software. It provides integrity that means providing security to the software so that data can be accessed by only an authorized person, no outsider can access the data. It also focuses on maintainability and usability. Software Engineering: A Layered Technology 2. Process: It is the foundation or base layer of software engineering. It is key that binds all the layers together which enables the development of software before the deadline or on time. Process defines a framework that must be established for the effective delivery of software engineering technology. The software process covers all the activities, actions, and tasks required to be carried out for software development. Software Engineering: A Layered Technology 3. Method: During the process of software development the answers to all “how-to-do” questions are given by method. It has the information of all the tasks which includes communication, requirement analysis, design modeling, program construction, testing, & support. 4. Tools: Software engineering tools provide a self-operating system for processes and methods. Tools are integrated which means information created by one tool can be used by another. Software Engineering: A Layered Technology What are the five generic process framework activities? The following generic process framework is applicable to the majority of software projects. Communication. Planning. Modeling. Construction. Deployment. Software Processes Software Processes is a coherent set of activities for specifying, designing, implementing and testing software systems. A software process model is an abstract representation of a process that presents a description of a process from some particular perspective. There are many different software processes but all involve: Software specifications: The functionality of the software and constraints on its operation must be defined. Software development: The software to meet the requirement must be produced. Software Processes Software validation: The software must be validated to ensure that it does what the customer wants. Software evolution: The software must evolve to meet changing client needs. software process model is an abstraction of the software development process. The models specify the stages and order of a process. So, think of this as a representation of the order of activities of the process and the sequence in which they are performed. Types software process model Linear Sequential Model RAD model Prototype model Evolutionary Software Process Model Component- Based Development Waterfall model V model Incremental model Agile model Iterative model Spiral model Software Development Life Cycle (SDLC) A software life cycle model (also termed process model) is a pictorial and diagrammatic representation of the software life cycle. A life cycle model represents all the methods required to make a software product transit through its life cycle stages. It also captures the structure in which these methods are to be undertaken. A software life cycle model describes entry and exit criteria for each phase. A phase can begin only if its stage-entry criteria have been fulfilled. So without a software life cycle model, the entry and exit criteria for a stage cannot be recognized. Without software life cycle models, it becomes tough for software project managers to monitor the progress of the project. Software Development Life Cycle (SDLC) Software Development Life Cycle (SDLC) Stage 1: Planning Planning & Analysis Defining the requirements of the application, both functional and nonfunctional. Stage 2: Design Translate the business needs into technical plans. Just like building a house, you need to make plans before starting the construction. Stage 3: Implementation The translation of plans into applications or components, building the walls. Stage 4: Testing & Integration Ensuring everything is working both in a functional and non-functional way. Stage 5: Maintenance After the application is done, we need to go to production. Ensuring the application is running as expected Waterfall or The Linear Sequential Model Waterfall is also referred to as a linear-sequential life cycle model and a classical software development methodology that was first introduced by Winston W. Royce in 1970. It is a linear and sequential approach to software development that consists of several phases that must be completed in a specific order. The phases include: Requirements Gathering and Analysis: The first phase involves gathering requirements from stakeholders and analyzing them to understand the scope and objectives of the project. Waterfall or The Linear Sequential Model Design: Once the requirements are understood, the design phase begins. This involves creating a detailed design document that outlines the software architecture, user interface, and system components. Implementation: The implementation phase involves coding the software based on the design specifications. This phase also includes unit testing to ensure that each component of the software is working as expected. Testing: In the testing phase, the software is tested as a whole to ensure that it meets the requirements and is free from defects. Deployment: Once the software has been tested and approved, it is deployed to the production environment. Maintenance: The final phase of the Waterfall Model is maintenance, which involves fixing any issues that arise after the software has been deployed and ensuring that it continues to meet the requirements over time. Waterfall or The Linear Sequential Model Waterfall Model - Advantages Simple and easy to understand and use Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process. Phases are processed and completed one at a time. Works well for smaller projects where requirements are very well understood. Clearly defined stages. Well understood milestones. Easy to arrange tasks. Process and results are well documented. Waterfall Model-Disadvantages In this model, the risk factor is higher, so this model is not suitable for more significant and complex projects. This model cannot accept the changes in requirements during development. It becomes tough to go back to the phase. For example, if the application has now shifted to the coding phase, and there is a change in requirement, It becomes tough to go back and change it. Since the testing done at a later stage, it does not allow identifying the challenges and risks in the earlier phase, so the risk reduction strategy is difficult to prepare. The Prototype Model The prototype model requires that before carrying out the development of actual software, a working prototype of the system should be built. A prototype is a toy implementation of the system. A prototype usually turns out to be a very crude version of the actual system, possible exhibiting limited functional capabilities, low reliability, and inefficient performance as compared to actual software. In many instances, the client only has a general view of what is expected from the software product. In such a scenario where there is an absence of detailed information regarding the input to the system, the processing needs, and the output requirement, the prototyping model may be employed. The Prototype Model The Prototype Model Phases Step 1: Requirement Gathering and Analysis: This is the initial step in designing a prototype model. In this phase, users are asked about what they expect or what they want from the system. Step 2: Quick Design: This is the second step in Prototyping Model. This model covers the basic design of the requirement through which a quick overview can be easily described. Step 3: Build a Prototype: This step helps in building an actual prototype from the knowledge gained from prototype design. Step 4: Initial User Evaluation: This step describes the preliminary testing where the investigation of the performance model occurs, as the customer will tell the strength and weaknesses of the design, which was sent to the developer. Step 5: Refining Prototype: If any feedback is given by the user, then improving the client’s response to feedback and suggestions, the final system is approved. Step 6: Implement Product and Maintain: This is the final step in the phase of the Prototyping Model where the final system is tested and distributed to production, here program is run regularly to prevent failures. Prototype Model- Advantages This model is flexible in design. It is easy to detect errors. We can find missing functionality easily. It can be reused by the developer for more complicated projects in the future. It ensures a greater level of customer satisfaction and comfort. It is ideal for online system. It helps developers and users both understand the system better. Integration requirements are very well understood and deployment channels are decided at a very early stage. It can actively involve users in the development phase. Prototype Model- Disadvantages This model is costly. It has poor documentation because of continuously changing customer requirements. There may be too much variation in requirements. Customers sometimes demand the actual product to be delivered soon after seeing an early prototype. Customers may not be satisfied or interested in the product after seeing the initial prototype. There may be incomplete or inadequate problem analysis. The RAD (Rapid Application Development) Model The Rapid Application Development Model was first proposed by IBM in the 1980s. The RAD model is a type of incremental process model in which there is extremely short development cycle. When the requirements are fully understood and the component-based construction approach is adopted then the RAD model is used. The RAD Model
1.Business Modeling: The information flow among
business functions is defined by answering questions like what data drives the business process, what data is generated, who generates it, where does the information go, who process it and so on. 2. Data Modeling: The data collected from business modeling is refined into a set of data objects (entities) that are needed to support the business. The attributes (character of each entity) are identified, and the relation between these data objects (entities) is defined. The RAD Model 3. Process Modeling: The information object defined in the data modeling phase are transformed to achieve the data flow necessary to implement a business function. Processing descriptions are created for adding, modifying, deleting, or retrieving a data object. 4. Application Generation: Automated tools are used to facilitate construction of the software. 5. Testing & Turnover: Many of the programming components have already been tested since RAD emphasis reuse. This reduces the overall testing time. But the new part must be tested, and all interfaces must be fully exercised. The RAD Model- Advantages This model is flexible for change. Changing requirements can be accommodated. Progress can be measured. Iteration time can be short with use of powerful RAD tools. Productivity with fewer people in a short time. Reduced development time. Increases reusability of components. Quick initial reviews occur. Encourages customer feedback. The RAD Model- Disadvantages It required highly skilled designers. All application is not compatible with RAD. For smaller projects, we cannot use the RAD model. On the high technical risk, it's not suitable. Required user involvement. High dependency on Modeling skills. Evolutionary Software Process Model Evolutionary process models are iterative. They are highly useful to a software engineer to develop more complex version soft wares. Software requirements are fragmented into several chunks that can be built and transferred incrementally. In other words, you develop a skeleton of the product and in successive versions, you add more functionalities. Services are not required for the core module (first stage) of the system. The iterative waterfall model is used for developing an evolutionary model. In simple words, “Iterative” + “Incremental model” = Evolutionary model Evolutionary Software Process Model Three types in evolutionary process model: 1. The prototyping model 2. The spiral model 3. The concurrent development model Advantages of the Evolutionary Process Model During the development phase, the customer gives feedback regularly because the customer’s requirement gets clearly specified. After every iteration risk gets analyzed. Suitable for big complex projects. The first build gets delivered quickly as it used an iterative and incremental approach. Disadvantages of the Evolutionary Process Model It is not suitable for small projects. The complexity of the spiral model can be more than the other sequential models. The cost of developing a product through a spiral model is high. Spiral Model Spiral Model is a risk-driven software development process model. It is a combination of waterfall model and iterative model. Spiral Model helps to adopt software development elements of multiple process models for the software project based on unique risk patterns ensuring efficient development process.
Each phase of spiral model in software engineering begins
with a design goal and ends with the client reviewing the progress. The spiral model in software engineering was first mentioned by Barry Boehm in his 1986 paper. Spiral Model Spiral Model Objectives determination and identify alternative solutions: Requirements are gathered from the customers and the objectives are identified, elaborated, and analyzed at the start of every phase. Then alternative solutions possible for the phase are proposed in this quadrant. Identify and resolve Risks: During the second quadrant, all the possible solutions are evaluated to select the best possible solution. Then the risks associated with that solution are identified and the risks are resolved using the best possible strategy. At the end of this quadrant, the Prototype is built for the best possible solution. Develop the next version of the Product: During the third quadrant, the identified features are developed and verified through testing. At the end of the third quadrant, the next version of the software is available. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so-far developed version of the software. In the end, planning for the next phase is started. Spiral Model- Advantages
Changing requirements can be accommodated.
Allows extensive use of prototypes. Requirements can be captured more accurately. Users see the system early. Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management. Spiral Model- Disadvantages
Management is more complex.
End of the project may not be known early. Not suitable for small or low risk projects and could be expensive for small projects. Process is complex. Spiral may go on indefinitely. Large number of intermediate stages requires excessive documentation. The concurrent development model
Sometimes called concurrent engineering, can be
represented schematically as a series of framework activities, software engineering actions, tasks and their associated states. The model defines a series of events that will trigger transitions from state to state for each of the software engineering activities, actions, or tasks. The concurrent development model The concurrent development model- Advantages Reduced overall development time: By working on various aspects of the project simultaneously. Reduced development costs: Working on multiple aspects of the project concurrently can help to reduce the overall development costs. Increased customer satisfaction: The development team can deliver the final product to the customer sooner by completing the project in a shorter time. Improved quality of the final product: By simultaneously working on various aspects of the project, the development team can quickly identify and resolve potential problems. The concurrent development model- Disadvantages Increased complexity: Working on multiple aspects of the project simultaneously can increase the project's complexity. Increased risk of errors: If communication and collaboration among team members are not well- organized, there is a greater risk of errors. Requires more planning time: To properly implement concurrent engineering, the development team must spend more time planning and organizing the project. The Component based development The component based development model incorporates many of the characteristics of the spiral model. It is evolutionary in nature, demanding an iterative approach to the creation of software. However, the model focuses on prepackaged software components. It promotes software reusability. Modeling and construction activities begin with the identification of candidate components. Candidate components can be designed as either conventional software modules or object oriented packages. The Component based development The component based development model incorporates many of the characteristics of the spiral model. It is evolutionary in nature, demanding an iterative approach to the creation of software. However, the model focuses on prepackaged software components. It promotes software reusability. Modeling and construction activities begin with the identification of candidate components. Candidate components can be designed as either conventional software modules or object oriented packages. The Component based development Component based development has the following steps: 1. Available component based products are researched and evaluated for the application domain. 2. Component integration issues are considered. 3. A software architecture is designed to accommodate the components. 4. Components are integrated into the architecture. 5. Comprehensive testing is conducted to ensure proper functionality. The Component based development The Component based development- Advantages Ease of deployment − As new compatible versions become available, it is easier to replace existing versions with no impact on the other components or the system as a whole. Reduced cost − The use of third-party components allows you to spread the cost of development and maintenance. Ease of development − Components implement well-known interfaces to provide defined functionality, allowing development without impacting other parts of the system. Reusable − The use of reusable components means that they can be used to spread the development and maintenance cost across several applications or systems. Modification of technical complexity − A component modifies the complexity through the use of a component container and its services. The Component based development- Advantages Reliability − The overall system reliability increases since the reliability of each individual component enhances the reliability of the whole system via reuse. System maintenance and evolution − Easy to change and update the implementation without affecting the rest of the system. Independent − Independency and flexible connectivity of components. Independent development of components by different group in parallel. Productivity for the software development and future software development. The Component based development- Disadvantages Component trustworthiness - how can a component with no available source code be trusted? Component certification - who will certify the quality of components? Emergent property prediction - how can the emergent properties of component compositions be predicted? Requirements trade-offs - how do we do trade-off analysis between the features of one component and another?