Understanding the Essence of Software Development Process
Software is a vital component in today's technology-driven world. It consists of instructions, data structures, and descriptive information that enable the functioning of computer programs. Unlike hardware manufacturing, software development is an engineering process that undergoes changes and deterioration over time. Despite the trend towards component-based construction, custom-built software remains prevalent. The software industry encompasses categories like system software, application software, engineering/scientific software, and embedded software, each serving unique purposes in various domains.
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
Software Development Process Unit 1 12 marks
Definition of Software Software is: 1. Instructions (computer programs) that when executed provide desired features, function, and performance; 2. Data structures that enable the programs to adequately manipulate information, and 3. Descriptive information (documents) in both hard copy and virtual forms that describes the operation and use of the programs.
Characteristics of software Software is developed or engineered; it is not manufactured in the classical sense. The two activities (software development and hardware manufacturing) are fundamentally different. In both activities, high quality is achieved through good design, but the manufacturing phase for hardware can introduce quality problems.
Software doesnt wear out. But it does deteriorate! During its life, software will undergo change. As changes are made, it is likely that errors will be introduced, causing the failure rate curve to spike as shown in the actual curve . Before the curve can return to the original steady-state failure rate, another change is requested, causing the curve to spike again. Slowly, the minimum failure rate level begins to rise the software is deteriorating due to change.
Although the industry is moving toward component- based construction, most software continues to be custom built.
Categories of software /changing nature of software System software It is collection of programs written to service other programs. Some system software (e.g., compilers,editors, and file management utilities) processes complex, but determinate, information structures. Other systems applications (e.g., operating system components, drivers, networking software process largely indeterminate data. Application software Stand-alone programs that solve a specific business need. Applications in this area process business or technical data in a way that facilitates business operations or management/technical decision making
Engineering/scientific software Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing E.g.: CAD software. Embedded software Resides within a product or system and is used to implement and control features and functions for the end user and for the system itself. Embedded software can perform limited functions (e.g., key pad control for a microwave oven) or provide significant function and control capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and braking systems). E.g. Control buttons of washing machine.
Product-line software Designed to provide a specific capability for use by many different customers. Product-line software can focus on a limited marketplace (e.g., inventory control products) or address mass consumer markets (e.g., word processing, spreadsheets, computer graphics, multimedia, entertainment, database management, and personal and business financial applications). Web applications Called WebApps, this network-centric software category spans a wide array of applications. In their simplest form, WebApps can be little more than a set of linked hypertext files that present information using text and limited graphics.
Artificial intelligence software Makes use of non-numerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis. Applications within this area include robotics, expert systems, pattern recognition (image and voice), artificial neural proving, and game playing networks, theorem
Software Engineering: A layered technology approach:
Software engineering is a layered technology. Referring to, any engineering approach (including software engineering) organizational commitment to quality. The bedrock that supports software engineering is a quality focus. must rest on an The foundation for software engineering is the process layer. The software engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software. Process defines a framework that must be established for effective delivery of software engineering technology.
The software process forms the basis for management control of software projects and establishes the context in which technical methods are applied, work products (models, documents, data, reports, forms, etc.) are produced, milestones are established, quality is ensured, and change is properly managed. Software engineering methods provide the technical how-to s for building software.
Software engineering tools provide automated or semi-automated support for the process and the methods. When tools are integrated so that information created by one tool can be used by another, a system for the support of software development, called computer-aided software engineering, is established.
The software process framework /framework activities: A process framework establishes the foundation for a complete software process by identifying a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. In fig each framework activity is populated by a set of software engineering actions. A collection of related tasks that produces a major software engineering work product. Each action in process framework is populated with individual work tasks that accomplish some part of the work implied by the action
1. Communication: Communication framework activity involves heavy communication and collaboration customer, encompasses requirements gathering, data gathering and other related activities. with the 2. Planning: Planning activity establishes a plan for software engineering work that follows. Planning describes the technical tasks to be conducted, the resources that will be required, schedule, and the risks that are likely in the work products to be produced.
3. Modeling: Modeling activity encompasses the creation of models that allow the developer and the customer to better understand software requirements specifications and the design that will achieve those requirements. There are two types of modeling i.e. analysis modeling and design modeling.
4. Construction: Construction activity combines code generation and the testing. 5. Deployment: The software is delivered to the customers who evaluates the delivered product and provides feedback based on the evaluation.
Umbrella Activities: Generic views of SE is complemented by a set of unbrella activities. They are Software Project tracking and control: It allows the software team to access progress against the project plan and takes necessary action to maintain schedule. Umbrella activities occur throughout the software process and focus management, tracking and control. primarily on project
Risk Management: Assess risks that are likely to affect performance and quality of project. Software quality assurance: Define and conduct activities to ensure software quality
Formal Technical Review: Assess Software Engg. Work products to uncover and remove errors before they are shifted to next level of activity. Measurement: Defines and collects process, project and product measures to assist the team in delivering the software that meets customer needs can be used in conjunction with all framework and umbrella activities
Software configuration Management (SCM): Manages and effects the changes throughout the software process. Reusability management: Defines criteria for work product reuse (including software components) and establishes the mechanism to achieve reusable components. Work product preparation and production: Includes activities for creating work product such as models, documents, large
Prescriptive Process Models: Irrespective of which level of CMM the organization has, the software engineer has five choices for selection of software process models. They are 1. Waterfall Model 2. Incremental Model 3. RAD Model 4. Prototype Model 5. Spiral Model
Communication: It involves heavy communication with the customer (or stakeholder) and encompasses requirement gathering and related activities. Planning: In this activity, effort required, cost/budget, risk analysis ,time duration are estimated (project plan is made) Modeling: This activity creates analysis and design models that both developers and customer to better understand the requirements. Data structure, software architecture and other details are made. Construction: This activity performs code generation and testing to ensure whether requirements are fulfilled. Code generation is done first and then testing is done after that. Deployment: Once the product is fully developed, it is delivered to the customer. Customer evaluates the product and provides feedback.
one stage should be completed before the other begins. All phases are clearly defined. Being oldest, this is one of the time tested Methods Real projects rarely follow sequential model. It is often difficult for the customer to state all requirements explicitly. The working model is available only in the latter part of the development.
This model presents a high level view and suggests to the developer the sequence of events they should expect to encounter. This model is used to development activities in variety of contexts. prescribe software One of the biggest limitation is it does not reflect the way code is really developed.
Advantages: It is the simplest software process model. Easy to understand Phases are completed one at a time Works well for smaller projects
Disadvantages: Real projects rarely follow the sequential flow that the model proposes. Although the linear model can accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the project team proceeds. It is often difficult for the customer to state all requirements explicitly. The waterfall model requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of many projects. The customer must have patience. A working version of the program(s) will not be available until late in the project time span. A major blunder, if undetected until the working program is reviewed, can be disastrous.
Situation in which incremental model is applicable: The incremental model combines elements of linear and parallel process flows. There are many situations in which initial software requirements are reasonably well defined, but the overall scope of the development effort prevents a purely linear process. When an incremental model is used, the first increment is often a core product. That is, basic requirements are addressed but many supplementary features (some known, others unknown) remain undelivered.
Few of the steps are defined It is iterative in nature. New model for development It provides on the rigid nature(fixed) of sequential approach This method is of great help when organization is low on staffing. This model could be time consuming.
Advantages: Useful when staffing is unavailable Less costly to change the scope of the project Customer can respond to each build. Disadvantages: Cost is higher than waterfall model. Needs good planning and design
Rapid Application Development (RAD) is a modern software process model that emphasizes a short development cycle. high-speed adaptation (Rapid Application Development ) If requirements are well understood and project scope is considered, the RAD process enables a development team to create a Fully Functional System within a very short period of time (e.g. 60 to 90 days). This model should be used if domain experts are available with relevant business knowledge.
Advantages: 1. Changing requirements can be accommodated and progress can be measured. 2. Powerful RAD tools can reduce development time. 3. Productivity with small team in short development time and quick reviews, risk control increases reusability of components, better quality. 4. Due to risks in new approach only modularized systems are recommended through RAD. 5. Suitable for scalable component based systems.
Disadvantages: 1. Success of RAD model depends on strong technical team expertise and skills. 2. Highly skilled developers needed with modeling skills. 3. &customers are not committed to the rapid fire activities necessary to complete the System in a much-abbreviated time frame, RAD projects will fail. User involvement throughout life cycle. If developers 4. May not be appropriate for very large scale systems where the technical risks are high.
drawback of RAD model. 1. RAD needs enough human resources to create the required number of RAD teams. 2. If developers and customers are not committed to the rapid model, the RAD project fails. 3. Rapid-fire activities need to be completed in very short or small time frame. Time is the major constraint in RAD. 4. RAD has to be modularized in a proper way otherwise creates a lots of confusions and problems. 5. In case of high performance requirement, RAD cannot be ideal model.
Situation in which prototyping model is applicable: Often, a customer defines a set of general objectives for software, but does not identify detailed requirements for functions and features. Prototyping iteration is planned quickly, and modeling (in the form of a quick design ) occurs. The prototyping paradigm assists you and other stakeholders to better understand what is to be built when requirements are indefinite. The prototyping paradigm begins with communication. You meet with other stakeholders to define the overall objectives for the software, identify whatever requirements are known, and outline areas where further definition is mandatory.
Advantages: Users are actively involved in the development. Users get better understanding of the system being developed. Errors can be detected much earlier. Quick user feedback is available. Disadvantages: Overall software quality or maintainability may not get considered when the prototype is being developed. An inefficient algorithm may be implemented. Inappropriate OS or programming language maybe used simply because it is available.
Using the spiral model, software is developed in a series of evolutionary releases. During early iterations, the release might be a model or prototype. During later iterations, increasingly more complete versions of the engineered system are produced. A spiral model is divided into a set of framework activities defined by the software engineering team. Risk is considered as each revolution is made. Each pass through the planning region results in adjustments to the project plan. Cost and schedule are adjusted based on feedback derived from the customer after delivery.
Advantages: The spiral model is a realistic approach to the development of large-scale systems and software. High amount of risk analysis hence, avoidance of risk is enhanced. Disadvantages: It may be difficult to convince customers (particularly in contract evolutionary approach is controllable. It demands considerable expertise and relies on this expertise for success. If a major risk is not uncovered and managed, problems will undoubtedly occur. situations) that the risk assessment
Agile Software Development Agile : Our highest priority is to satisfy the customer through early and continuous delivery of valuable software It is an recent approach for Project Management Cycle-time reduction is most important Model focuses on modularity, iterative, time bound, parsimony, adaptive, incremental convergent, collaborative approach Agile process model uses the concept of Extreme Programming
Features of the Agile Software Development Approach Modularity allows a process to be broken into components called activities. Iterative Agile software processes focus on short cycles. Within each cycle, a certain set of activities is completed. Time-Bound set time limits (between one and six weeks is normal) on each iteration and schedule Parsimony require a minimal number of activities necessary to reduce risks and achieve their goals.
Adaptive The agile process adapts the process to attack these new found risks. Incremental partitions the nontrivial system into increments which may be developed in parallel, at different times, and at different rates. Convergent actively attacking all of the risks worth attacking. People-Oriented Developers that are empowered raise their productivity, quality, and performance. Collaborative When a project is developed in pieces, understanding how the pieces fit together is vital to creating the finished product.
Agile Methodologies eXtreme Programming (XP) Scrum Crystal family of methodologies Feature-Driven Development (FDD) Adaptive Software Development (ASD) Dynamic System Development Model (DSDM) Agile Unified Process (AUP)
eXtreme Programming (XP) XP's Four Values 1. Communication. Most projects fail because of poor communication. So implement practices that force communication in a positive way. 2. Simplicity. Develop the simplest product that meets the customer s needs 3. Feedback. Developers must obtain and value feedback from the customer, from the system, and from each other. 1. The same as standard Agile values: value customer collaboration over contract negotiation. 4. Courage. Be prepared to make hard decisions that support the other principles and practices. 5. Respect . The agile team inculcates respect among it members, between other stakeholders and team members, and indirectly, for the software itself.