Software Engineering Unit 1-Introduction
Document Details
Uploaded by RestoredRainforest7719
PES University
Tags
Summary
This document provides an introduction to software engineering, outlining its importance and need. It covers various software development processes, such as Waterfall, Agile and other models are discussed for software development.
Full Transcript
Unit 1-Introduction to Software Engineer **Software Engineering** The term **software engineering** is the product of two words, **software**, and **engineepring** - The **software** is a collection of integrated programs. Computer programs and related documentation such as requirements, desig...
Unit 1-Introduction to Software Engineer **Software Engineering** The term **software engineering** is the product of two words, **software**, and **engineepring** - The **software** is a collection of integrated programs. Computer programs and related documentation such as requirements, design models and user manuals. - **Engineering** is the application of **scientific** and **practical** knowledge to **invent, design, build, maintain**, and **improve frameworks, processes, etc**. **[Software Engineering]** is an engineering branch related to the evolution of software product using well-defined scientific principles, techniques, and procedures. The result of software engineering is an effective and reliable software product. **Why is Software Engineering required** Software Engineering is required due to the following reasons: - To manage Large software - For more Scalability - Cost Management - To manage the dynamic nature of software - For better quality Management **Need of Software Engineering** - The necessity of software engineering appears because of a higher rate of progress in user requirements and the environment on which the program is working. - **Huge Programming: **It is simpler to manufacture a wall than to a house or building, similarly, as the measure of programming become extensive engineering has to step to give it a scientific process. - **Adaptability: **If the software procedure were not based on scientific and engineering ideas, it would be simpler to re-create new software than to scale an existing one. - **Cost: **As the hardware industry has demonstrated its skills and huge manufacturing has let down the cost of computer and electronic hardware. But the cost of programming remains high if the proper process is not adapted. - **Dynamic Nature: **The continually growing and adapting nature of programming hugely depends upon the environment in which the client works. If the quality of the software is continually changing, new upgrades need to be done in the existing one. - **Quality Management:** Better procedure of software development provides a better and quality software product. **Importance of Software Engineering** Software Engineering Introduction **The importance of Software engineering is as follows:** **1. Reduces complexity:** Software engineering divides big problems into various small issues. And then start solving each small issue one by one. All these small problems are solved independently to each other. 2.**To minimize software cost:** A lot of manpower is required to develop software with a large number of codes. But in software engineering, programmers project everything and decrease all those things that are not needed. In turn, the cost for software productions becomes less as compared to any software that does not use software engineering method. **3. To decrease time:** if we are making your software according to the software engineering method, then it will decrease a lot of time. 4\. **Handling big projects:** Big projects are not done in a couple of days, and they need lots of patience, planning, and management. And to invest six and seven months of any company, it requires heaps of planning, direction, testing, and maintenance. No one can say that he has given four months of a company to the task, and the project is still in its first stage. Because the company has provided many resources to the plan and it should be completed. So to handle a big project without any problem, the company has to go for a software engineering method. 5\. **Reliable software:** Software should be secure, means if you have delivered the software, then it should work for at least its given time or subscription. And if any bugs come in the software, the company is responsible for solving all these bugs. Because in software engineering, testing and maintenance are given, so there is no worry of its reliability. **6. Effectiveness:** Effectiveness comes if anything has made according to the standards. Software standards are the big target of companies to make it more effective. **[Ethics of Software Engineering:]** **Public:** Software engineers shall act consistently with the public interest. **Client and employer:** Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. **Product:** Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. **Judgment:** Software engineers shall maintain integrity and independence in their professional judgment. **Management: **Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. **Profession: **Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. **Colleagues:** Software engineers shall be fair to and supportive of their colleagues. **Self: **Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. **Software process model:** **Software process :** A software process is the development team\'s activities that lead to the final development of their software program. Each of these activities relates to the other in some way, forming a linear path the team follows from initial planning to final deliverables. **Process Activities :** - **Specification:** The team defines the main functionality of the software program they\'re building. They also consider the constraints of the project and the specific features that should exist in the final software program. - **Design and implementation:** The team designs the software around the specification phase\'s parameters and programs the software. This includes all of the coding, planning, 3D design and initial planning aside from defining the project\'s specifications. - **Verification and validation:** The team verifies that the completed software program conforms to the customer\'s needs and meets quality expectations. The team presents the prototype to the customer for review. - **Evolution:** The team listens to customer feedback and adjusts the software to meet new parameters or improve original parameters for better functionality. This can be an ongoing process for the team if they offer post-development support for their software **Coping with change:** Change is inevitable in all large software projects. The system requirements change as businesses respond to external pressures, competition, and changed management priorities. As new technologies become available, new approaches to design and implementation become possible. Therefore whatever software process model is used, it is essential that it can accommodate changes to the software being developed. Change adds to the costs of software development because it usually means that work that has been completed has to be redone. This is called rework. For example, if the relationships between the requirements in a system have been analyzed and new requirements are then identified, some or all of the requirements analysis. **Software process model:** A software process model is a digital or hand-written model that details the software development process. Processes models help provide a visual representation of the development process for both the team and the customer to review. **Types of software process models:** - - - - - - - - 1. **Waterfall Model ** - The Waterfall Model was the first Process Model to be introduced. It is also referred to as a **linear-sequential life cycle model**. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. - The Waterfall model is the earliest SDLC approach that was used for software development. - The waterfall Model illustrates the software development process in a linear sequential flow. This means that any phase in the development process begins only if the previous phase is complete. In this waterfall model, the phases do not overlap. The sequential phases in Waterfall model are − - **Requirement Gathering and analysis** − All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document. - **System Design** − The requirement specifications from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture. - **Implementation** − With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing. - **Integration and Testing** − All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures. - **Deployment of system** − Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market. - **Maintenance** − There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment. **Waterfall Model -- Application** - Requirements are very well documented, clear and fixed. - Product definition is stable. - Technology is understood and is not dynamic. - There are no ambiguous requirements. - Ample resources with required expertise are available to support the product. - The project is short. **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. **Disadvantages** - No working software is produced until late during the life cycle. - High amounts of risk and uncertainty. - Not a good model for complex and object-oriented projects. - Poor model for long and ongoing projects. - Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model. - It is difficult to measure progress within stages. - Cannot accommodate changing requirements. **2. V -model** The V-model represents a development process that may be considered an extension of the waterfall model and is an example of the more general V-model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction (coarsest-grain abstraction uppermost), respectively. **Design Phase:** - **Requirement Analysis:** This phase contains detailed communication with the customer to understand their requirements and expectations. This stage is known as Requirement Gathering. - **System Design:** This phase contains the system design and the complete hardware and communication setup for developing product. - **Architectural Design:** System design is broken down further into modules taking up different functionalities. The data transfer and communication between the internal modules and with the outside world (other systems) is clearly understood. - **Module Design:** In this phase the system breaks down into small modules. The detailed design of modules is specified, also known as Low-Level Design (LLD). **Testing Phases:** - **Unit Testing:** Unit Test Plans are developed during module design phase. These Unit Test Plans are executed to eliminate bugs at code or unit level. - **Integration testing:** After completion of unit testing Integration testing is performed. In integration testing, the modules are integrated and the system is tested. Integration testing is performed on the Architecture design phase. This test verifies the communication of modules among themselves. - **System Testing:** System testing test the complete application with its functionality, inter dependency, and communication. It tests the functional and non-functional requirements of the developed application. - **User Acceptance Testing (UAT):** UAT is performed in a user environment that resembles the production environment. UAT verifies that the delivered system meets user's requirement and system is ready for use in real world. **Why preferred** - - **Advantages:** - This is a highly disciplined model and Phases are completed one at a time. - V-Model is used for small projects where project requirements are clear. - Simple and easy to understand and use. - This model focuses on verification and validation activities early in the life cycle thereby enhancing the probability of building an error-free and good quality product. **Disadvantages: ** - High risk and uncertainty. - It is not a good for complex and object-oriented projects. - It is not suitable for projects where requirements are not clear and contains high risk of changing. - This model does not support iteration of phases. - It does not easily handle concurrent events. **3.Incremental Model** Incremental Model is a process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved. ![Incremental Model](media/image5.jpeg) **The various phases of incremental model are as follows:** **1. Requirement analysis:** In the first phase of the incremental model, the product analysis expertise identifies the requirements. And the system functional requirements are understood by the requirement analysis team. To develop the software under the incremental model, this phase performs a crucial role. **2. Design & Development:** In this phase of the Incremental model of SDLC, the design of the system functionality and the development method are finished with success. When software develops new practicality, the incremental model uses style and development phase. **3. Testing:** In the incremental model, the testing phase checks the performance of each existing function as well as additional functionality. In the testing phase, the various methods are used to test the behavior of each task. **4. Implementation:** Implementation phase enables the coding phase of the development system. It involves the final coding that design in the designing and development phase and tests the functionality in the testing phase. After completion of this phase, the number of the product working is enhanced and upgraded up to the final system product **When we use the Incremental Model** - When the requirements are superior. - A project has a lengthy development schedule. - When Software team are not very well skilled or trained. - When the customer demands a quick release of the product. - You can develop prioritized requirements first. **Advantage of Incremental Model** - Errors are easy to be recognized. - Easier to test and debug - More flexible. - Simple to manage risk because it handled during its iteration. - The Client gets important functionality early. **Disadvantage of Incremental Model** - Need for good planning - Total Cost is high. - Well defined module interfaces are needed. **4. Iterative Model** In this Model, you can start with some of the software specifications and develop the first version of the software. After the first version if there is a need to change the software, then a new version of the software is created with a new iteration. Every release of the Iterative Model finishes in an exact and fixed period that is called iteration. The Iterative Model allows the accessing earlier phases, in which the variations made respectively. The final output of the project renewed at the end of the Software Development Life Cycle (SDLC) process. **The various phases of Iterative model are as follows:** **1. Requirement gathering & analysis:** In this phase, requirements are gathered from customers and check by an analyst whether requirements will fulfil or not. Analyst checks that need will achieve within budget or not. After all of this, the software team skips to the next phase. **2. Design:** In the design phase, team design the software by the different diagrams like Data Flow diagram, activity diagram, class diagram, state transition diagram, etc. **3. Implementation:** In the implementation, requirements are written in the coding language and transformed into computer programmes which are called Software. **4. Testing:** After completing the coding phase, software testing starts using different test methods. There are many test methods, but the most common are white box, black box, and grey box test methods. **5. Deployment:** After completing all the phases, software is deployed to its work environment. **6. Review:** In this phase, after the product deployment, review phase is performed to check the behaviour and validity of the developed product. And if there are any error found then the process starts again from the requirement gathering. **7. Maintenance:** In the maintenance phase, after deployment of the software in the working environment there may be some bugs, some errors or new updates are required. Maintenance involves debugging and new addition options. **When to use the Iterative Model** 1. When requirements are defined clearly and easy to understand. 2. When the software application is large. 3. When there is a requirement of changes in future. **Advantage of Iterative Model:** 1. Testing and debugging during smaller iteration is easy. 2. A Parallel development can plan. 3. It is easily acceptable to ever-changing needs of the project. 4. Risks are identified and resolved during iteration. 5. Limited time spent on documentation and extra time on designing. **Disadvantage of Iterative Model:** 1. It is not suitable for smaller projects. 2. More Resources may be required. 3. Design can be changed again and again because of imperfect requirements. 4. Requirement changes can cause over budget. 5. Project completion date not confirmed because of changing requirements. **5.RAD (Rapid Application Development) Model :** RAD is a linear sequential software development process model that emphasizes a concise development cycle using an element based construction approach. If the requirements are well understood and described, and the project scope is a constraint, the RAD process enables a development team to create a fully functional system within a concise time period. RAD is a concept that products can be developed faster and of higher quality through: - Gathering requirements using workshops or focus groups - Prototyping and early, reiterative user testing of designs - The re-use of software components - A rigidly paced schedule that refers design improvements to the next product version - Less formality in reviews and other team communication RAD - Rapid Application Development - Model **The various phases of RAD are as follows:** **1.Business Modelling:** 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 Modelling:** 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. **3. Process Modelling:** 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; even they use the 4th GL techniques. **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. **When to use RAD Model** - When the system should need to create the project that modularizes in a short span time (2-3 months). - When the requirements are well-known. - When the technical risk is limited. - When there\'s a necessity to make a system, which modularized in 2-3 months of period. - It should be used only if the budget allows the use of automatic code generating tools. **Advantage of RAD Model** - This model is flexible for change. - In this model, changes are adoptable. - Each phase in RAD brings highest priority functionality to the customer. - It reduced development time. - It increases the reusability of features. **Disadvantage of RAD Model** - 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. 6.Spiral Model: =============== **Each cycle in the spiral is divided into four parts:** **Objective setting:** Each cycle in the spiral starts with the identification of purpose for that cycle, the various alternatives that are possible for achieving the targets, and the constraints that exists. **Risk Assessment and reduction:** The next phase in the cycle is to calculate these various alternatives based on the goals and constraints. The focus of evaluation in this stage is located on the risk perception for the project. **Development and validation:** The next phase is to develop strategies that resolve uncertainties and risks. This process may include activities such as benchmarking, simulation, and prototyping. **Planning:** Finally, the next step is planned. The project is reviewed, and a choice made whether to continue with a further period of the spiral. If it is determined to keep, plans are drawn up for the next step of the project. When to use Spiral Model - When deliverance is required to be frequent. - When the project is large - When requirements are unclear and complex - When changes may require at any time - Large and high budget projects **Advantages:** - High amount of risk analysis - Useful for large and mission-critical projects. **Disadvantages:** - Can be a costly model to use. - Risk analysis needed highly particular expertise - Doesn\'t work well for smaller projects. 7.Prototyping Model: ==================== ![Prototyping Models](media/image9.jpeg) **Prototyping Model** **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. **Types of Prototyping Models** There are four types of Prototyping Models, which are described below. - - - - - **1. Rapid Throwaway Prototyping** This technique offers a useful method of exploring ideas and getting customer feedback for each of them. In this method, a developed prototype need not necessarily be a part of the ultimately accepted prototype. Customer feedback helps in preventing unnecessary design faults and hence, the final prototype developed is of better quality. **2. Evolutionary Prototyping** In this method, the prototype developed initially is incrementally refined on the basis of customer feedback till it finally gets accepted. **3.Incremental Prototyping** In this type of incremental Prototyping, the final expected product is broken into different small pieces of prototypes and developed individually. In the end, when all individual pieces are properly developed, then the different prototypes are collectively merged into a single final product in their predefined order. ### **4. Extreme Prototyping** This method is mainly used for web development. It consists of three sequential independent phases: 1. 2. 3. **Advantages of Prototyping Model** - The customers get to see the partial product early in the life cycle. This ensures a greater level of customer satisfaction and comfort. - New requirements can be easily accommodated as there is scope for refinement.Missing functionalities can be easily figured out. - Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the quality of the software. - The developed prototype can be reused by the developer for more complicated projects in the future. - Flexibility in design. **Disadvantages of the Prototyping Model** - - - - - - The **Agile model** is a software development process that is based on the iterative development of software products. The Agile model is a type of incremental model where software is developed in a rapid incremental cycle. The most notable feature of the Agile model is the establishment of the project scope, requirements, number, and duration of iteration at the beginning of the development process. **Software Development Methodology :** Software development methodology is a process or series of processes used in software development. Again, quite broad but that it is things like a design phase, a development phase. It is ways of thinking about things like waterfall being a non iterative kind of process. Generally it takes the form of defined phases. **Plan Driven Development (PDD):** Plan-driven development is a software development method which attempts to plan and develop all of the features a user might want in the final product and determines how all those features are to be developed. Actually this action plan is based on the execution of an ordered set of task-specific levels. We can say it is an attitude to software engineering wherever it is planned in feature how the development procedure will take place. It is based on the administration methods of project engineering & an old-style method of handling big software development ventures. It makes the use of management planning unfolds in measuring progress and making project decisions. **Project plans:** - Organizing the team and roles of different members. - Risk Analysis and Probabilities, Prospects, Strategies to Arise - Hardware as well as software resource requirements. - Deciding Activities, Deliveries, and Milestones. - Allotment of people and allocation of their time. - Monitoring and Reporting systems. **Advantages of PDD:** - Require knowledgeable personnel at the beginning. - Appropriate for big software development/extensive systems and sides. - Grips hazardous systems efficiently. - Suitable for a stable growth environment. - Achievement attained through construction and directive. **Disadvantages of PDD:** - Can not lodge changes any time. - Longer distance in each repetition or increase. - The shoulder that, future variations will not occur. - Lack of user participation through the life cycle of the creation. - Expensive for the dynamic expansion environment. **Differenciate Between Agile and Plan Driven Method:** **A plan-driven** development is a process where all the activities are planned in advance, and we measure the progress in advance against that plan. So as it appears from the term 'plan-driven development, it is always planned, and the results are to be shown at the end of the product. **Agile development**, planning is always incremental, where you can change the plan according to your customer requirements. So, as the term 'agile development' suggests, it is the process-based method where one can alter the way things and planning and replace them with the more suitable ones. ![Screen Clipping](media/image11.png)