Unit 1 Process Models; and Agile Development CHAPTER I Software and Software Engineering CHAPTER 2 the Software Process Models CHAPTER 3 Agile Process Model CHAPTER I Software and Software Engineering Q.1 what is 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) documentation that describes the operation and use of the programs. Q.2 Define Nature of the Software Software delivers the most important product of our time-information. It transforms personal data, it manages business information to enhance competitiveness, and it provides a gateway to worldwide information networks and provides the means for acquiring information in all of its forms Q.3 Explain Characteristic of Software Engineering Mainly Three Characteristics of Software Which Listed and Explain Below Software is developed or engineered; it is not manufactured in the classical sense. Software doesn't "wear out." Although the industry is moving toward component-based construction, most software continues to be custom-built. Software is developed or engineered; it is not manufactured in the classical sense. Although some similarities exist between software envelopment and hardware manufacturing the two activities is fundamentally different in both Activities, high quality is achieved through good design, but the manufacturing Phase for hardware can introduce quality problem Both activities are dependent on people, but the relationship between people applied and work accomplished is both activities require the construction of a "product," but the approaches are different This means that software projects cannot be managed as if they were manufacturing projects. Software doesn't "wear out." Often called the "bathtub curve," indicates that hardware exhibits relatively high failure rates early in its life (these failures are often attributable to design or manufacturing defects); defects are corrected and the failure Rate drops to a steady-state level (hopefully, quite low) for some period of Time. As time passes, however, the failure rate rises again as hardware components Suffer from the cumulative effects of dust, vibration, abuse, and temperature Extremes and many other environmental maladies. Stated simply, the hardware begins to wear out. We can say that Hardware effect the Environments and Software doesn’t Although the industry is moving toward component-based construction, most software continues to be custom-built. As an engineering discipline evolves a, collection of standard design Components Is created Standard screws and off-the-shelf integrated circuits are only two of thousands of standard components that are used by mechanical and electrical engineers Design the new System A software component should be designed and implemented so that it can be reused in many different programs. Modern reusable component Q.4 Explain Types of Software or Different Software Application Today, seven broad categories of computer software present continuing challenges for software engineers system software application software engineering/scientific software embedded software product-line software WebApps (Web applications) AI software System software-a collection of programs written to service other programs system software-a collection of programs written to service other programs some system software g., compilers, editors, and file management, operating system components, drivers, networking the systems software area is characterized by heavy interaction with computer hardware hevily y usage by multiple users Application software-stand-alone programs that solve a specific business Applications in this area process business or technical data in a way facilitates business operations or management technical decision Engineering /scientific software - has been characterized by number “crunching" algorithms. Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, and computer-aided design, system simulation example of Engineering /scientific software which take real time input 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 and esoteric functions (e.g., key pad control for a microwave oven (e.g., digital functions in an automobile such as fuel control, dashboard displays, and breaking systems its example of embedded system which perform Specific task. Product-line software -designed to provide a specific capability for use by many different customers. Product line software can focus on a limited and esoteric marketplace (e.g., inventory control products or address mass consumer markets (e.g., word processing, spreadsheets, computer graphics' multimedia, entertainment, database management, and personal system these all Are example of Product-line software Web applications- called “webApps," this network-centric software category Spans wide array of applications. In their simples it form, WebApp be little more than a set of linked hypertext files that present information using text and limited graphics that Provides integrated with corporate databases and business application Artificial intelligence software-makes use of no numerical algorithms to solve complex problems that is not amenable to computation or straightforward Analysis Applications within this area include robotics, expert systems pattern recognition (image and voice), artificial neural networks, theorem proving, and game Playing. Other Systems:- Open world computing—pervasive, distributed computing Ubiquitous computing—wireless networks Netsourcing—the Web as a computing engine Open source—”free” source code open to the computing community (a blessing, but also a potential curse!) Data mining Grid computing Cognitive machines Software for nanotechnologies Q.5 Explain Legacy Software Why must it change? Software must be adapted to meet the needs of new computing environments or technology. Software must be enhanced to implement new business requirements. Software must be extended to make it interoperable with other more modern systems or databases. Software must be re-architected to make it viable within a network environment. Q.6 what is Software Engineering Some realities: a concerted effort should be made to understand the problem before a software solution is developed design becomes a pivotal activity software should exhibit high quality software should be maintainable The seminal definition: [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. The IEEE definition: Software Engineering: (1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). Q.7 give the Details of a Layered Technology for Software Engineering Software Engineering Layered Consists:- 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' Computer aided Software engineering Software engineering methods provide the technical how-to's for building software. Methods encompass a broad array of tasks that include communication, Requirements analysis, design modeling, program construction, testing, and support. 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. The software process forms the basis for management control of software projects. It’s Design Work Products such as (models, documents, data, reports, forms, etc.). Software engineering is a layered technology Focus on Quality that include Total quality management, six sigma, that Control software Design which affected to the customer Q.8 Explain Framework Activities in details Framework Activities Communication Planning Modeling Analysis of requirements Design Construction Code generation Testing Deployment Communication Before any technical work can commence, it is critically important to communicate and collaborate with the customer (and other Stakeholders the intent is to understand stakeholders, objectives for the Project and to gather requirements that help define software features and Functions Planning any complicated journey can be simplified if a map exists. A software project is a complicated journey, and the planning activity. The MAP called Software Project Plane which include Schedule of Project and also include Risk Assessment and Management. Modeling whether you're a landscaper, a bridge builder, an aeronautical Engineer, a carpenter, or an architect, you work with models every day. A software engineer does the same thing by creating models to better understand software requirements and the design Construction this activity combines code generation (either manual or automated) and the testing that is required uncovering errors in the code. Deployment The software (as a complete entity or as a partially completed Increment) is delivered to the customer who evaluates the delivered Product and provides feedback based on the evaluation. Q.9 List out and Explain umbrella Activities Software project management Formal technical reviews Software quality assurance Software configuration management Work product preparation and production Reusability management Measurement Risk management Q.10 List out S/W Myths Some Myths are Management Myths and Customer Myths and Practitioners Myths CHAPTER 2 the Software Process Models Q.1 Define Different Process Flow Q.2 what is Process Pattern? Explain its type in detail A process pattern describes a process-related problem that is encountered during software engineering work, identifies the environment in which the problem has been encountered, and Suggests one or more proven solutions to the problem Stated in more general terms, a process pattern provides you with a template [Amb98]—a consistent method for describing problem solutions within the context of the software process Stage patterns—defines a problem associated with a framework activity for the process. Task patterns—defines a problem associated with a software engineering action or work task and relevant to successful software engineering practice Phase patterns—define the sequence of framework activities that occur with the process, even when the overall flow of activities is iterative in nature. Q.3 what is Prescriptive Process Models? Explain its each Process Models in details Prescriptive process models advocate an orderly approach to software engineering That leads to a few questions … If prescriptive process models strive for structure and order, are they inappropriate for a software world that thrives on change? Yet, if we reject traditional process models (and the order they imply) and replace them with something less structured, do we make it impossible to achieve coordination and coherence in software work? Common Prescriptive Models are:The Waterfall Model The V-Model The Incremental Model The Waterfall Model:- Com m unic a t ion proje c t init ia t ion re quire m e nt ga t he ring Planning es timating sc heduling track ing Mode ling analysis design Const r uc t ion code t est De ploy m e nt de liv e ry s upport f e e dba c k There are times when the requirements for a problem are well understood-when Work flows from communication through development in a reasonably linear fashion. This situation s sometimes called Enhancement of exiting system. The waterfall Models sometimes called the classic life cycle, suggest systematic sequential approach software development that begins with customer specification of requirements progresses the planning, modeling construction and deployment of the Completed the Software The V-Model:- A variation in the representation of the waterfall model is called the V-model) depicts the relationship of quality In Waterfall Model flow are sequential you can’t back the process whenever you not finish the first cycle but in V model support the back Process flow during the process of action As software team moves down the left side of the v as a software team moves down the left side of the v representations of the problem and its solution' Once code has been generate the team moves up the right side of the v that validate each of the models created as the team moved down the left side there is no fundamental difference between the classic life cycle and the V-model The V-model provides a way of visualizing how verification and validation actions are applied to earlier engineering work. The Following Problems in Waterfall Models: Changes can cause confusion as the project team proceeds It is often difficult for the customer states all requirements explicitly The customer have make the patience until not Produce Working versions of S/W These problems are solved in different Process Models The Incremental Model:- increment # n Co m m u n i c a t i o n Pla nning M odeling a na ly s i s d es ig n Co n s t ru c t i o n c ode t es t De p l o y m e n t d e l i v e ry fe e dba c k deliv ery of nt h increment increment # 2 Co m m u n i c a t i o n Pla nning M odeling a na l y s i s d es i gn Co n s t ru c t i o n c o de De p l o y m e n t t es t d e l i v e ry fe e dba c k increment # 1 deliv ery of 2nd increment Co m m u n i c a t i o n Pla nning M odeling an a l y s i s de s i gn Co n s t ru c t i o n c od e De p l o y m e n t t es t d e l i v e ry fe e dba c k deliv ery of 1st increment project calendar t ime • • • • Used when requirements are well understood Multiple independent deliveries are identified Work flow is in a linear and Parallel (i.e., sequential) fashion within an increment and is staggered between increments Iterative in nature; focuses on an operational product with each increment • • • • Provides a needed set of functionality sooner while delivering optional components later Useful also when staffing is too short for a full-scale development Focus on no of increments Every Increments produce new features of software Q.4 what is Evolutionary Process Models? Explain its each Process Models in details Evolutionary Process Models when System is Complex and Requirement change over time. Also useful when make complete Software. Evolutionary Process Models are following the iterative flow Process Common Prescriptive Models are: Prototyping Process Model The Spiral Process Model Concurrent Process Model Prototyping Process Model:- • • • • • • Follows an evolutionary and iterative approach Used when requirements are not well understood Serves as a mechanism for identifying software requirements Focuses on those aspects of the software that are visible to the customer/user Feedback is used to refine the prototype Better for stakeholder when Requirements are fuzzy • The customer sees a "working version" of the software, wants to stop all development and then buy the prototype after a "few fixes" are made Developers often make implementation compromises to get the software running quickly (e.g., language choice, user interface, operating system choice, inefficient algorithms) Lesson learned – Define the rules up front on the final disposition of the prototype before it is built – In most circumstances, plan to discard the prototype and engineer the actual production software with a goal toward quality • • The Spiral Process Model:- planning estimation scheduling risk analysis communication modeling analysis design start deployment delivery feedback construction code test • • • • • • • • Invented by Dr. Barry Boehm in 1988 while working at TRW Follows an evolutionary approach Used when requirements are not well understood and risks are high Inner spirals focus on identifying software requirements and project risks; may also incorporate prototyping Outer spirals take on a classical waterfall approach after requirements have been defined, but permit iterative growth of the software Operates as a risk-driven model…a go/no-go decision occurs after each complete spiral in order to react to risk determinations Requires considerable expertise in risk assessment Serves as a realistic model for large-scale software development Concurrent Process Model:- none Modeling act ivit y represent s t he st at e of a sof t ware engineering act ivit y or t ask Under development A wait ing changes Under review Under revision Baselined Done General Weaknesses of Evolutionary Process Models:1) Prototyping poses a problem to project planning because of the uncertain number of iterations required to construct the product 2) Evolutionary software processes do not establish the maximum speed of the evolution • If too fast, the process will fall into chaos • If too slow, productivity could be affected 3) Software processes should focus first on flexibility and extensibility, and second on high quality • We should prioritize the speed of the development over zero defects • Extending the development in order to reach higher quality could result in late delivery Still Other Process Models: Component based development—the process to apply when reuse is a development objective Formal methods—emphasizes the mathematical specification of requirements AOSD—provides a process and methodological approach for defining, specifying, designing, and constructing aspects Unified Process—a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML) Component-based Development Model:• • • Consists of the following process steps – Available component-based products are researched and evaluated for the application domain in question – Component integration issues are considered – A software architecture is designed to accommodate the components – Components are integrated into the architecture – Comprehensive testing is conducted to ensure proper functionality Relies on a robust component library Capitalizes on software reuse, which leads to documented savings in project cost and time Formal Methods Model:• • • Development of formal methods is currently quite time-consuming and expensive Because few software developers have the necessary background to apply formal methods, extensive training is required It is difficult to use the models as a communication mechanism for technically unsophisticated customers The Unified Process (UP) Process Models:- • • • Birthed during the late 1980's and early 1990s when object-oriented languages were gaining wide-spread use Many object-oriented analysis and design methods were proposed; three top authors were Grady Booch, Ivar Jacobson, and James Rumbaugh They eventually worked together on a unified method, called the Unified Modelling Language (UML) – UML is a robust notation for the modeling and development of object-oriented systems – UML became an industry standard in 1997 – However, UML does not provide the process framework, only the necessary technology for object-oriented development Inception Phase:• • • • • Encompasses both customer communication and planning activities of the generic process Business requirements for the software are identified A rough architecture for the system is proposed A plan is created for an incremental, iterative development Fundamental business requirements are described through preliminary use cases – A use case describes a sequence of actions that are performed by a user Elaboration Phase:• • • Encompasses both the planning and modeling activities of the generic process Refines and expands the preliminary use cases Expands the architectural representation to include five views • • – Use-case model – Analysis model – Design model – Implementation model – Deployment model Often results in an executable architectural baseline that represents a first cut executable system The baseline demonstrates the viability of the architecture but does not provide all features and functions required to use the system Construction Phase:• • • • • Encompasses the construction activity of the generic process Uses the architectural model from the elaboration phase as input Develops or acquires the software components that make each use-case operational Analysis and design models from the previous phase are completed to reflect the final version of the increment Use cases are used to derive a set of acceptance tests that are executed prior to the next phase Transition Phase:• • • • Encompasses the last part of the construction activity and the first part of the deployment activity of the generic process Software is given to end users for beta testing and user feedback reports on defects and necessary changes The software teams create necessary support documentation (user manuals, trouble-shooting guides, installation procedures) At the conclusion of this phase, the software increment becomes a usable software release Production Phase:• Encompasses the last part of the deployment activity of the generic process • On-going use of the software is monitored • Support for the operating environment (infrastructure) is provided • Defect reports and requests for changes are submitted and evaluated Q.5 Give the short note in PSP PSP stands for Personal Software Process Planning. This activity isolates requirements and develops both size and resource estimates. In addition, a defect estimate (the number of defects projected for the work) is made. All metrics are recorded on worksheets or templates. Finally, development tasks are identified and a project schedule is created. High-level design. External specifications for each component to be constructed are developed and a component design is created. Prototypes are built when uncertainty exists. All issues are recorded and tracked. High-level design review. Formal verification methods (Chapter 21) are applied to uncover errors in the design. Metrics are maintained for all important tasks and work results. Development. The component level design is refined and reviewed. Code is generated, reviewed, compiled, and tested. Metrics are maintained for all important tasks and work results. Postmortem. Using the measures and metrics collected (this is a substantial amount of data that should be analyzed statistically), the effectiveness of the process is determined. Measures and metrics should provide guidance for modifying the process to improve its effectiveness Q.6 Give the short note in TSP Team Software Process Build self-directed teams that plan and track their work, establish goals, and own their processes and plans. These can be pure software teams or integrated product teams (IPT) of three to about 20 engineers. Show managers how to coach and motivate their teams and how to help them sustain peak performance. Accelerate software process improvement by making CMM Level 5 behavior normal and expected. The Capability Maturity Model (CMM), a measure of the effectiveness of a software process, is discussed in Chapter 30. Provide improvement guidance to high-maturity organizations. Facilitate university teaching of industrial-grade team skills. CHAPTER 3 Agile Process Model Q.1 Give the short Agile Process Model in detail The Manifesto for Agile Software Development :“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.” Kent Beck et al What is “Agility”:- Effective (rapid and adaptive) response to change Effective communication among all stakeholders Drawing the customer onto the team Organizing a team so that it is in control of the work performed Yielding … Rapid, incremental delivery of software Agility and the Cost of Change:- An Agile Process: Is driven by customer descriptions of what is required (scenarios) Recognizes that plans are short-lived Develops software iteratively with a heavy emphasis on construction activities Delivers multiple ‘software increments’ Adapts as changes occur Agility Principles – I:1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 4. Business people and developers must work together daily throughout the project. 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 6. The most efficient and effective method of conveying information to and within a development team is face–to–face conversation. 7. Working software is the primary measure of progress. 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 9. Continuous attention to technical excellence and good design enhances agility. 10. Simplicity – the art of maximizing the amount of work not done – is essential. 11. The best architectures, requirements, and designs emerge from self–organizing teams. 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. Agile Process Models:There are three main Agile Process Models Extreme Programming (XP) Adaptive Software Development Scrum Extreme Programming (XP): The most widely used agile process, originally proposed by Kent Beck XP Planning Begins with the creation of “user stories” Agile team assesses each story and assigns a cost Stories are grouped to for a deliverable increment A commitment is made on delivery date After the first increment “project velocity” is used to help define subsequent delivery dates for other increments (XP) Process steps: XP Design Follows the KIS principle Encourage the use of CRC cards Class Responsibility Collaborator (see Chapter 8) For difficult design problems, suggests the creation of “spike solutions”—a design prototype Encourages “refactoring”—an iterative refinement of the internal program design XP Coding Recommends the construction of a unit test for a store before coding commences Encourages “pair programming” XP Testing All unit tests are executed daily “Acceptance tests” are defined by the customer and excuted to assess customer visible functionality simple design CRC cards spike solut ions prot ot ypes user st ories values accept ance t est crit eria it erat ion plan refact oring pair programming Release sof t ware increment project velocit y comput ed unit t est cont inuous int egrat ion accept ance t est ing Adaptive Software Development Process Model: Originally proposed by Jim Highsmith ASD — distinguishing features Mission-driven planning Component-based focus Uses “time-boxing” (See Chapter 24) Explicit consideration of risks Emphasizes collaboration for requirements gathering Emphasizes “learning” throughout the process adapt ive cycle planning uses mission st at ement project const raint s basic requirement s Requirement s gat hering JAD mini-specs t ime-boxed release plan Release sof t ware increment adjust ment s f or subsequent cycles component s implement ed/ t est ed f ocus groups f or f eedback f ormal t echnical reviews post mort ems Scrum: Originally proposed by Schwaber and Beedle Scrum—distinguishing features Development work is partitioned into “packets” Testing and documentation are on-going as the product is constructed Work occurs in “sprints” and is derived from a “backlog” of existing requirements Meetings are very short and sometimes conducted without chairs “demos” are delivered to the customer with the time-box allocated