Software Development Models PDF
Document Details
![SplendidGyrolite5000](https://quizgecko.com/images/avatars/avatar-1.webp)
Uploaded by SplendidGyrolite5000
Ladoke Akintola University of Technology
Tags
Summary
This document details different software development models and architectures, emphasizing the Waterfall, and Incremental models. It covers aspects like maintenance, characteristics, and advantages/disadvantages of each model. The document is focused on understanding different methodologies within computer science.
Full Transcript
# Software Development Models and Architectures The goal of system testing is to ensure that the developed system conforms to the requirements laid out in the SRS document. ## Maintenance Maintenance of a typical software product requires much more than the effort necessary to develop the product...
# Software Development Models and Architectures The goal of system testing is to ensure that the developed system conforms to the requirements laid out in the SRS document. ## Maintenance Maintenance of a typical software product requires much more than the effort necessary to develop the product itself. Many studies carried out confirm that the relative effort of development of a typical software product to its maintenance effort is roughly in the 40:60 ratios. Maintenance involves performing any one or more of the following three kinds of activities: - Correcting errors that were not discovered during the product development phase. This is called corrective maintenance. - Improving the implementation of the system, and enhancing the functionalities of the system according to the customer's requirements. This is called perfective maintenance. - Porting the software to work in a new environment. For example, porting may be required to get the software to work on a new computer platform or with a new operating system. This is called adaptive maintenance. ## Software Development Models and Architecture Software development models are frameworks that guide the process of creating software applications. They provide a structured approach to planning, designing, implementing, testing, and deploying software. Types of Software Methodologies include Waterfall, Agile, V-Model, Incremental, Spiral, Rapid Application Development (RAD), Extreme Programming (XP), Scrum, Kanban, and Lean Software Development. ### Characteristics of Software Methodologies 1. Iterative or sequential approach 2. Emphasis on documentation or flexibility 3. Customer involvement and feedback 4. Team collaboration and communication 5. Risk management and mitigation 6. Testing and validation 7. Change management and version control 8. Team size and experience 9. Time and budget constraints 10. Risk tolerance and management ### Software Methodology Selection Criteria: 1. Project size and complexity 2. Enhanced team collaboration 3. Customer requirements and expectations 4. Reduced risks and errors 5. Technology and infrastructure 6. Better quality software 7. Regulatory and compliance requirements 8. Resistance to change ### Benefits of Software Methodologies 1. Improved project management 2. Faster time-to-market 3. Increased customer satisfaction 4. Improved maintainability and scalability ### Challenges in Implementing Software Methodologies 1. Cultural and organizational changes 2. Lack of training and expertise 3. Difficulty in scaling 4. Insufficient resources and budget 5. Balancing flexibility and structure 6. Integrating with existing processes 7. Real-World Applications 8. IT departments 9. Software development companies 10. Healthcare organizations 11. Financial institutions 12. E-commerce platforms 13. Government agencies 14. Mobile app development ### 3.3.1 Waterfall Model The Waterfall model involves initially developing the application, which is followed by various types of testing. Less client participation is required with the waterfall paradigm. Debugging takes place after the final step under this model, while problem identification occurs during testing. The Waterfall Model follows a strict, linear sequence of phases and is best for small projects with well-defined requirements. It produces the final product only after all phases are completed. This model is basically used for small projects. #### Classical Waterfall Model - Feasibility Study - Req. Analysis - Design - Coding - Testing - Maintenance #### Key Features 1. Linear, sequential approach 2. Each phase completes before next begins 3. No overlap between phases 4. Predictable timeline and budget 5. Emphasis on documentation #### Advantages 1. Easy to manage and understand 2. Clear timelines and milestones 3. Suitable for small, well-defined projects 4. Less complex and less risky #### Disadvantages 1. Inflexible to changes 2. High risk if requirements change 3. Difficult to incorporate feedback 4. Testing occurs late in the cycle 5. Limited customer involvement ### 3.3.2 Incremental Model The Incremental Model develops the software in smaller, iterative cycles, delivering a working version early and adding features incrementally. This approach offers more flexibility and lower risk. In Incremental Model Multiple development cycles take place and these cycles are divided into more smaller modules. Generally a working software in incremental model is produced during first module. Each subsequent release of the module adds function to the previous released. In incremental model, process continues till the complete system is achieved. Hence, Incremental model is a software development process that breaks down the project into smaller, manageable increments, with each increment building upon the previous one. #### Key Features: 1. Divide project into smaller increments 2. Flexible and adaptable 3. Iterative development 4. Emphasis on continuous improvement 5. Each increment has specific goals and deliverables #### Advantages 1. Faster time-to-market 2. Reduced risk 3. Increased customer satisfaction 4. Easier maintenance and updates 5. Improved team morale #### Disadvantages 1. Requires careful planning 2. Difficulty in predicting final product 3. May lead to scope creep 4. Requires continuous testing and integration ### 3.3.3 V-Model The V-Model is a software development process that combines elements of the Waterfall and Verification/Validation models. V-model is the most important model that is used in the process of software testing. The late Paul Rook introduced it in the 1980s. The V-model is a sequential process in which the next phase begins only after the completion of the present phase. It's characterized by phases viz: - Requirements Gathering - System Design - Architecture Design - Module Design - Coding - Unit Testing - Integration Testing - System Testing - Acceptance Testing #### Key Features 1. V-shaped diagram representing phases 2. Emphasis on verification and validation 3. Testing occurs in parallel with development 4. Feedback loops for iteration 5. Each phase has specific deliverables #### Advantages 1. Improved testing and quality assurance 2. Reduced defects and rework 3. Better requirements tracing 4. Increased customer satisfaction 5. Suitable for complex projects #### Disadvantages 1. More complex and time-consuming 2. Requires more resources and planning 3. Difficult to adapt to changing requirements 4. Higher costs ### 3.3.4 Spiral Model The Spiral model is a risk-driven software development process that combines elements of Waterfall and Iterative models. Its diagrammatic representation, looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the spiral is called a phase of the software development process. It provides support for Risk Handling. It consists of the following phases: - Planning Phase - Risk Analysis - Engineering Phase - Evaluation Phase #### Objectives Defined In the first phase of the spiral model we clarify what the project aims to achieve, including functional and non-functional requirements. #### Risk Analysis In the risk analysis phase, the risks associated with the project are identified and evaluated. #### Engineering In the engineering phase, the software is developed based on the requirements gathered in the previous iteration. #### Evaluation In the evaluation phase, the software is evaluated to determine if it meets the customer's requirements and if it is of high quality. #### Planning The next iteration of the spiral begins with a new planning phase, based on the results of the evaluation. #### Key Features 1. Risk assessment and mitigation 2. Iterative development 3. Emphasis on customer feedback 4. Flexible and adaptive 5. Multiple cycles (spirals) ## Comparing Model Features ### Waterfall Model: - The waterfall model can't handle large projects. - Flexibility to change in the waterfall model is difficult. - The cost of the Waterfall model is low. - Testing is done in the waterfall model after the completion of the coding phase. - Returning to the previous stage/phase is not possible. - In the waterfall model, a large team is required. - In the waterfall model overlapping of phases is not possible. - There is only one cycle in the waterfall model. - The customer is involved only at the beginning of development. - The linear framework type is used. - The customer is having least control over the administrator. - Reusability is the least possible. ### Incremental Model - The incremental model also can't handle large projects. - Flexibility to change in incremental model is easy. - The cost of the incremental model is also low. - Testing is done in the incremental model after every iteration of the phase. - Returning to the previous stage/phase is possible. - In an incremental model large team is not required. - In incremental model overlapping of phases is possible. - Multiple development cycles take place in the incremental model. - In incremental model, customer involvement is intermediate. - Linear with iterative framework type is used. - The customer has more control over the administrator - Reusability is possible to some extent. ### Prototype Model - Prototyping model can help to reduce the risk of developing a software product that does not meet the needs of end-users or stakeholders, while also reducing development time and cost. The prototype can be developed using different methods, such as throwaway prototyping, evolutionary prototyping, and incremental prototyping. The prototyping model can be used in conjunction with other software development methodologies, such as agile development, to create software products that meet the needs of end-users and stakeholders. #### Advantages of Software Prototyping - Users help to shape the future. As a result, errors can be discovered during the first stage of the software development process. - Prototyping is also considered a risk reduction function because it allows non-existent performance to be seen, lowering the risk of failure. - Assists team members in effectively communicating. - Customer satisfaction exists, and he can feel the product from the start. - There will be no risk of software loss. - Quick user feedback aids in the development of better software solutions. #### Disadvantages of Software Prototyping - Prototyping is a time-consuming and labor-intensive process. - The cost of creating a specific type of waste is completely wasted because the prototype is eventually discarded. - Prototyping may result in an overabundance of change requests. - Customers may be unwilling to commit to the iteration cycle for an extended period of time. - During each customer test, there may be too many variations in software requirements. - Poor documentation as a result of changing customer needs. ### 3.3.5 Iterative Model - The iterative model is a way of software development that works in small steps for the development of the software. It was developed by a group of software developers for better ways of developing one. It is an easy way to craft requirements into a software solution. This works in iterations as large tasks are divided into small steps and easy step is developed in iterations to achieve a final solution. #### Advantages of Iterative: - It makes easy debugging of errors. - It is a more flexible way of creating software. #### Disadvantages of Iterative: - It requires good planning for deciding iterations. - It needs well-defined modules to work on. ### 3.3.6 Prototype Model - Software Prototyping Model is a software development methodology that involves creating an initial prototype of the software product before developing the final product. The prototype is a working model of the software product that can be used to gather feedback and refine the design before the final product is developed. The prototyping model is particularly useful for projects where the requirements are not well-defined or are likely to change over time. The ## Software Requirements - **Usability:** The software should be easy to use and have a user-friendly interface. - **Reliability:** The system must have 99.9% uptime. - **Security:** Data must be encrypted during transmission and storage ### 4.1.3 Domain Requirements - **Definition:** Domain requirements are specific to the domain or industry in which the software operates. They include terminology, rules, and standards relevant to that particular domain. Domain requirements reflect the unique needs and constraints of a particular industry. They ensure that the software is relevant and compliant with industry-specific regulations and standards. - **Domain requirements** are the requirements that are characteristic of a particular category or domain of projects. Domain requirements can be functional or nonfunctional. Domain requirements engineering is a continuous process of proactively defining the requirements for all foreseeable applications to be developed in the software product line. The basic functions that a system of a specific domain must necessarily exhibit come under this category. For instance, in academic software that maintains records of a school or college, the functionality of being able to access the list of faculty and list of students of each grade is a domain requirement. These requirements are therefore identified from that domain model and are not user-specific. #### Examples: - **Healthcare:** The software must comply with HIPAA regulations for handling patient data. - **Finance:** The system should adhere to GAAP standards for financial reporting. - **E-commerce:** The system should support various payment gateways like PayPal, Stripe, and credit cards. ### Other Common Classifications of Software Requirements 1. **User requirements:** A User requirement is a documented need of what a particular user or set of users requires from a system to achieve an objective. User requirements refer to the specific needs, expectations, and constraints of the end users or stakeholders who will interact with the software system. They outline the system's desired functionalities, features, and characteristics from the user's perspective. User requirements provide the foundation for designing software solutions that meet user needs and deliver a satisfactory user experience. These lay down critical guidelines for the design and deployment of the system, encapsulating the desired user experience and functionality. These requirements describe what the end-user wants from the software system. User requirements are usually expressed in natural language and are typically gathered through interviews, surveys, Questionnaires, Focus Groups. - This document elaborates on the functions to the user. - Helps user to understand interactions of software and its behavior. - It helps designing testing parameters for software. - Provides better aid for wire-frames and conceptual diagrams. #### Examples: - User Authentication: The system must allow users to log in using a username and password. - Search Functionality: The software should enable users to search for products by name or category. - Report Generation: The system should be able to generate sales reports for a specified date range. ### 4.1.2 Non-functional Requirements - **Definition:** Non-functional requirements describe how the software performs a task rather than what it should do. They define the quality attributes, performance criteria, and constraints. Non-functional requirements are about the system's behavior, quality, and constraints. They ensure that the software meets certain standards of performance, usability, reliability, and security. - These are basically the quality constraints that the system must satisfy according to the project contract. Nonfunctional requirements, not related to the system functionality, rather define how the system should perform The priority or extent to which these factors are implemented varies from one project to other. They are also called non-behavioral requirements. They basically deal with issues like: Portability, Security, Maintainability, Reliability, Scalability, Performance, Reusability, Flexibility. #### Non-functional requirements are classified into the following types: - **Interface constraints** - **Performance constraints:** response time, security, storage space, etc. - **Operating constraints** - **Life cycle constraints:** maintainability, portability, etc. - **Economic constraints** The process of specifying non-functional requirements requires the knowledge of the functionality of the system, as well as the knowledge of the context within which the system will operate. - They are divided into two main categories: - **Observable at run time:** These consist of thing like security and usability, which are observable at run time. - **Execution qualities:** These consist of things like testability, maintainability, extensibility, and scalability that are embodied in the static structure of the software system. #### Examples: - Performance: The system should process 1,000 transactions per second.