The document discusses process models in software engineering. It defines process models as a framework that defines the typical activities, actions, and tasks required to build high-quality software. Process models provide stability, control, and organization to the software development process. The document discusses the key components of a generic process model, including the five framework activities of communication, planning, modeling, construction, and deployment. It also discusses process flows, task sets, process patterns, process assessment, and prescriptive process models.
Process models provide structure and organization to software development projects. They define a series of steps and activities to follow, including communication, planning, modeling, construction, and deployment. Various process models exist such as waterfall, iterative, incremental, prototyping, and spiral. Process patterns describe common problems encountered and proven solutions. Process assessment ensures the chosen process meets criteria for success. Evolutionary models like prototyping and spiral are useful when requirements are unclear and the project involves risk reduction through iterative development.
The document discusses various software development process models including:
- Waterfall model - A linear sequential model that progresses through requirements, design, implementation, testing, integration, and maintenance.
- V-Model - A variation of waterfall that incorporates validation and verification at each stage.
- Incremental model - Combines elements of linear and parallel flows by delivering incremental versions of software.
- Evolutionary models like prototyping and spiral model - Iteratively develop increasingly complete versions of software to accommodate changing requirements.
- Concurrent model - Allows activities like modeling to occur concurrently rather than sequentially.
It also discusses process frameworks, patterns, assessment, and personal software process models. The goal is to provide structure while allowing for flexibility
This document discusses software process models. It defines a software process as a framework for activities required to build high-quality software. A process model describes the phases in a product's lifetime from initial idea to final use. The document then describes a generic process model with five framework activities - communication, planning, modeling, construction, and deployment. It provides an example of identifying task sets for different sized projects. Finally, it discusses the waterfall process model as the first published model, outlining its sequential phases and problems with being rarely linear and requiring all requirements up front.
Software is a set of instructions and data structures that enable computer programs to provide desired functions and manipulate information. Software engineering is the systematic development and maintenance of software. It differs from software programming in that engineering involves teams developing complex, long-lasting systems through roles like architect and manager, while programming involves single developers building small, short-term applications. A software development life cycle like waterfall or spiral model provides structure to a project through phases from requirements to maintenance. Rapid application development emphasizes short cycles through business, data, and process modeling to create reusable components and reduce testing time.
This document provides information on the Software Engineering course with code 210253. It is a 3 credit course with a mid-semester exam worth 30 marks and an end-semester exam worth 70 marks. The syllabus covers topics like introduction to software engineering, software process models, prescriptive process models (waterfall, incremental, evolutionary), and agile software development. It also discusses concepts like software engineering fundamentals, process frameworks, generic process activities, prescriptive process models, evolutionary models, concurrent development model, and principles of software engineering practice.
This document discusses various process models for software engineering:
- The waterfall model defines sequential phases of requirements, design, implementation, testing, and maintenance. It is inflexible to change.
- Iterative models allow repetition of phases to incrementally develop software. The incremental model delivers functionality in increments.
- Evolutionary models like prototyping and spiral development use iterative evaluation and refinement of prototypes to evolve requirements and manage risk.
- Other models include component-based development, formal methods, aspect-oriented development, and the Unified Process with iterative development of use cases. Personal and team software processes focus on self-directed teams, planning, metrics, and process improvement.
The document discusses software process models which define a structured set of activities for developing software systems. These activities typically include specification, design & implementation, validation, and evolution. Process models provide organization and stability to software development. They define the approach taken and include activities like communication, planning, modeling, construction, and deployment. Process models can have different flows like linear, iterative, or evolutionary and can address problems at different levels of abstraction through patterns. Process assessment methods help ensure processes meet criteria for successful software engineering.
Process models provide structure and organization to software development projects. They define a series of steps and activities to follow, including communication, planning, modeling, construction, and deployment. Various process models exist such as waterfall, iterative, incremental, prototyping, and spiral. Process patterns describe common problems encountered and proven solutions. Process assessment ensures the chosen process meets criteria for success. Evolutionary models like prototyping and spiral are useful when requirements are unclear and the project involves risk reduction through iterative development.
The document discusses various software development process models including:
- Waterfall model - A linear sequential model that progresses through requirements, design, implementation, testing, integration, and maintenance.
- V-Model - A variation of waterfall that incorporates validation and verification at each stage.
- Incremental model - Combines elements of linear and parallel flows by delivering incremental versions of software.
- Evolutionary models like prototyping and spiral model - Iteratively develop increasingly complete versions of software to accommodate changing requirements.
- Concurrent model - Allows activities like modeling to occur concurrently rather than sequentially.
It also discusses process frameworks, patterns, assessment, and personal software process models. The goal is to provide structure while allowing for flexibility
This document discusses software process models. It defines a software process as a framework for activities required to build high-quality software. A process model describes the phases in a product's lifetime from initial idea to final use. The document then describes a generic process model with five framework activities - communication, planning, modeling, construction, and deployment. It provides an example of identifying task sets for different sized projects. Finally, it discusses the waterfall process model as the first published model, outlining its sequential phases and problems with being rarely linear and requiring all requirements up front.
Software is a set of instructions and data structures that enable computer programs to provide desired functions and manipulate information. Software engineering is the systematic development and maintenance of software. It differs from software programming in that engineering involves teams developing complex, long-lasting systems through roles like architect and manager, while programming involves single developers building small, short-term applications. A software development life cycle like waterfall or spiral model provides structure to a project through phases from requirements to maintenance. Rapid application development emphasizes short cycles through business, data, and process modeling to create reusable components and reduce testing time.
This document provides information on the Software Engineering course with code 210253. It is a 3 credit course with a mid-semester exam worth 30 marks and an end-semester exam worth 70 marks. The syllabus covers topics like introduction to software engineering, software process models, prescriptive process models (waterfall, incremental, evolutionary), and agile software development. It also discusses concepts like software engineering fundamentals, process frameworks, generic process activities, prescriptive process models, evolutionary models, concurrent development model, and principles of software engineering practice.
This document discusses various process models for software engineering:
- The waterfall model defines sequential phases of requirements, design, implementation, testing, and maintenance. It is inflexible to change.
- Iterative models allow repetition of phases to incrementally develop software. The incremental model delivers functionality in increments.
- Evolutionary models like prototyping and spiral development use iterative evaluation and refinement of prototypes to evolve requirements and manage risk.
- Other models include component-based development, formal methods, aspect-oriented development, and the Unified Process with iterative development of use cases. Personal and team software processes focus on self-directed teams, planning, metrics, and process improvement.
The document discusses software process models which define a structured set of activities for developing software systems. These activities typically include specification, design & implementation, validation, and evolution. Process models provide organization and stability to software development. They define the approach taken and include activities like communication, planning, modeling, construction, and deployment. Process models can have different flows like linear, iterative, or evolutionary and can address problems at different levels of abstraction through patterns. Process assessment methods help ensure processes meet criteria for successful software engineering.
This document summarizes several software development process models. It begins by defining what a software process is - a framework for the activities required to build software. It then discusses evolutionary models like prototyping and the spiral model, which use iterative development and user feedback. Concurrent modeling is presented as allowing activities to occur simultaneously. The Unified Process is described as use case driven and iterative. Other models discussed include component-based development, formal methods, and aspect-oriented development. Personal and team software processes are also summarized, focusing on planning, metrics, and continuous improvement.
Elementary Probability theory Chapter 2.pptxethiouniverse
Ā
The document discusses various software process models including waterfall, iterative, incremental, evolutionary (prototyping and spiral), and component-based development models. It describes the key activities and characteristics of each model and discusses when each may be applicable. The waterfall model presents a linear sequential flow while evolutionary models like prototyping and spiral are iterative and incremental to accommodate changing requirements.
Lightweight processes are beginning to replace more formal methods. The motivation for this transition is based on many factors. The Internet, time to market, cost reduction, quality increases, market pressures, as well as the popularization of these programming methods. This series of articles will investigate the various lightweight methods, their impact on the management of software development projects and the processes by which managers can determine the appropriateness and usefulness of the various processes. The definition of a lightweight Process is more difficult than it would first appear. This article outlines the foundations of a heavyweight process and describes the appropriate pieces that can be converted to lightweight.
This document discusses several software development models and practices. It describes the waterfall model which involves sequential stages of requirement analysis, design, implementation, testing, and maintenance. It also covers prototyping, rapid application development (RAD), and component assembly models which are more iterative in nature. The prototyping model involves creating prototypes to help define requirements, RAD emphasizes reuse and short development cycles, and component assembly focuses on reusing existing software components.
The document discusses different software process models. It describes the waterfall model, which involves sequential phases of requirement analysis, design, implementation, testing, and maintenance. The waterfall model suggests a systematic approach but real projects rarely follow sequential phases and instead involve overlap and feedback between phases. The document also briefly describes the build-and-fix model, which develops software without specifications or design and relies on repeated modifications until requirements are met.
This document provides information about obtaining fully solved assignments from an assignment help service. It lists the email and phone contact information and requests students to send their semester and specialization to receive help with assignments. It also lists some of the programs and subjects that assignments are available for, including MBADS, MBAFLEX, MBAN2, and PGDISMN.
Software testing and introduction to qualityDhanashriAmbre
Ā
The document provides an overview of software testing and quality assurance. It defines software testing as a process to investigate quality and find defects between expected and actual results. Testing is necessary to ensure software is defect-free per customer specifications and increases reliability. The document then discusses types of errors like ambiguous specifications, misunderstood specifications, and logic/coding errors. It outlines the software development life cycle including phases like planning, analysis, design, coding, testing, implementation, and maintenance. Each phase is described in 1-2 sentences.
This document provides an overview of several software development life cycle models:
- The Waterfall Model involves sequential phases from requirements to maintenance without iteration.
- Prototyping allows for experimenting with designs through iterative prototype development and user testing.
- Iterative models like the Spiral Model involve repeating phases of design, implementation, and testing in cycles with user feedback.
This document provides an overview of software engineering concepts including:
1. Software can be both a product and a means to deliver a product, transforming data in simple or complex ways. Software is defined as instructions, data structures, and documentation.
2. Software engineering is the systematic development of software using theories, methods, and tools. It produces software products through defined processes, methods, and management activities.
3. Common software process models include waterfall, incremental, evolutionary (like prototyping and spiral), and concurrent development models. Each has advantages and disadvantages depending on the project.
This document provides information about getting fully solved assignments for the MBA semester 3 course MI0033 ā Software Engineering (4 credits). It includes the assignment questions related to software development processes, metrics, configuration management, bug tracking, system analysis, specification reviews, software prototypes, and design principles. Students are instructed to send their semester and specialization details to the provided email ID or call the phone number to get the solved assignments. The assignment contains 6 questions ranging from 5-10 marks each.
The document discusses various aspects of software processes and life cycles. It describes three types of reusable software components: web services, object collections, and stand-alone systems. It also outlines common phases in a software life cycle like requirements analysis, design, implementation, testing, deployment, and maintenance. Incremental delivery approaches are discussed where early increments are delivered to customers.
The document discusses various aspects of software processes and life cycles. It describes three types of reusable software components: web services, object collections, and stand-alone systems. It also outlines common phases in a software life cycle like requirements analysis, design, implementation, testing, deployment, and maintenance. Incremental delivery approaches are discussed where early increments are delivered to customers.
Software Engineering Practices and Issues.pptxNikilesh8
Ā
The document discusses planning for a software project. It emphasizes the importance of careful planning to clarify goals, needs and constraints. This helps avoid issues like schedule slippage and cost overruns. The planning process involves defining the problem, developing solution strategies, and planning the development process. Goals and requirements are also important to establish. Goals can be qualitative or quantitative, and apply to both the development process and final product. Requirements specify necessary system capabilities and can be functional, for performance or interfaces. High-level goals and requirements are often expressed in terms of quality attributes like reliability, efficiency and usability.
The document discusses several software engineering process models. It begins by defining a generic process model with five framework activities: communication, planning, modeling, construction, and deployment. It then describes different types of process flows (linear, iterative, evolutionary, parallel). Next, it discusses prescriptive process models in more detail, including the waterfall model, incremental process models, and evolutionary models like prototyping and spiral. For each model, it provides an overview and highlights advantages and disadvantages.
The document provides an overview of software engineering. It defines software engineering as applying scientific principles and methods to the development of software. The document then discusses the need for software engineering due to factors like managing large or scalable software, cost management, and dynamic nature of software. It also covers key concepts in software engineering like product vs process, software evolution, software development life cycle (SDLC), different SDLC models like waterfall, incremental, iterative and evolutionary.
The document provides an overview of software engineering. It defines software engineering as applying scientific principles and methods to the development of software. The document then discusses the need for software engineering due to factors like managing large or scalable software, cost management, and dynamic nature of software. It also covers key concepts in software engineering like product vs process, software evolution, software development life cycle (SDLC), different SDLC models like waterfall, incremental, iterative and evolutionary models.
Lecture 2 introduction to Software Engineering 1IIUI
Ā
This document discusses key concepts in software engineering including:
- Software engineering uses a layered technology approach with tools, methods, processes, and a quality focus.
- It introduces common process frameworks and activities like planning, modeling, construction, and deployment.
- It also discusses umbrella activities that span the entire software development process such as configuration management, quality assurance, and risk management.
- Finally, it debunks some common myths among managers, customers, and practitioners regarding software projects.
This document summarizes several software development process models. It begins by defining what a software process is - a framework for the activities required to build software. It then discusses evolutionary models like prototyping and the spiral model, which use iterative development and user feedback. Concurrent modeling is presented as allowing activities to occur simultaneously. The Unified Process is described as use case driven and iterative. Other models discussed include component-based development, formal methods, and aspect-oriented development. Personal and team software processes are also summarized, focusing on planning, metrics, and continuous improvement.
Elementary Probability theory Chapter 2.pptxethiouniverse
Ā
The document discusses various software process models including waterfall, iterative, incremental, evolutionary (prototyping and spiral), and component-based development models. It describes the key activities and characteristics of each model and discusses when each may be applicable. The waterfall model presents a linear sequential flow while evolutionary models like prototyping and spiral are iterative and incremental to accommodate changing requirements.
Lightweight processes are beginning to replace more formal methods. The motivation for this transition is based on many factors. The Internet, time to market, cost reduction, quality increases, market pressures, as well as the popularization of these programming methods. This series of articles will investigate the various lightweight methods, their impact on the management of software development projects and the processes by which managers can determine the appropriateness and usefulness of the various processes. The definition of a lightweight Process is more difficult than it would first appear. This article outlines the foundations of a heavyweight process and describes the appropriate pieces that can be converted to lightweight.
This document discusses several software development models and practices. It describes the waterfall model which involves sequential stages of requirement analysis, design, implementation, testing, and maintenance. It also covers prototyping, rapid application development (RAD), and component assembly models which are more iterative in nature. The prototyping model involves creating prototypes to help define requirements, RAD emphasizes reuse and short development cycles, and component assembly focuses on reusing existing software components.
The document discusses different software process models. It describes the waterfall model, which involves sequential phases of requirement analysis, design, implementation, testing, and maintenance. The waterfall model suggests a systematic approach but real projects rarely follow sequential phases and instead involve overlap and feedback between phases. The document also briefly describes the build-and-fix model, which develops software without specifications or design and relies on repeated modifications until requirements are met.
This document provides information about obtaining fully solved assignments from an assignment help service. It lists the email and phone contact information and requests students to send their semester and specialization to receive help with assignments. It also lists some of the programs and subjects that assignments are available for, including MBADS, MBAFLEX, MBAN2, and PGDISMN.
Software testing and introduction to qualityDhanashriAmbre
Ā
The document provides an overview of software testing and quality assurance. It defines software testing as a process to investigate quality and find defects between expected and actual results. Testing is necessary to ensure software is defect-free per customer specifications and increases reliability. The document then discusses types of errors like ambiguous specifications, misunderstood specifications, and logic/coding errors. It outlines the software development life cycle including phases like planning, analysis, design, coding, testing, implementation, and maintenance. Each phase is described in 1-2 sentences.
This document provides an overview of several software development life cycle models:
- The Waterfall Model involves sequential phases from requirements to maintenance without iteration.
- Prototyping allows for experimenting with designs through iterative prototype development and user testing.
- Iterative models like the Spiral Model involve repeating phases of design, implementation, and testing in cycles with user feedback.
This document provides an overview of software engineering concepts including:
1. Software can be both a product and a means to deliver a product, transforming data in simple or complex ways. Software is defined as instructions, data structures, and documentation.
2. Software engineering is the systematic development of software using theories, methods, and tools. It produces software products through defined processes, methods, and management activities.
3. Common software process models include waterfall, incremental, evolutionary (like prototyping and spiral), and concurrent development models. Each has advantages and disadvantages depending on the project.
This document provides information about getting fully solved assignments for the MBA semester 3 course MI0033 ā Software Engineering (4 credits). It includes the assignment questions related to software development processes, metrics, configuration management, bug tracking, system analysis, specification reviews, software prototypes, and design principles. Students are instructed to send their semester and specialization details to the provided email ID or call the phone number to get the solved assignments. The assignment contains 6 questions ranging from 5-10 marks each.
The document discusses various aspects of software processes and life cycles. It describes three types of reusable software components: web services, object collections, and stand-alone systems. It also outlines common phases in a software life cycle like requirements analysis, design, implementation, testing, deployment, and maintenance. Incremental delivery approaches are discussed where early increments are delivered to customers.
The document discusses various aspects of software processes and life cycles. It describes three types of reusable software components: web services, object collections, and stand-alone systems. It also outlines common phases in a software life cycle like requirements analysis, design, implementation, testing, deployment, and maintenance. Incremental delivery approaches are discussed where early increments are delivered to customers.
Software Engineering Practices and Issues.pptxNikilesh8
Ā
The document discusses planning for a software project. It emphasizes the importance of careful planning to clarify goals, needs and constraints. This helps avoid issues like schedule slippage and cost overruns. The planning process involves defining the problem, developing solution strategies, and planning the development process. Goals and requirements are also important to establish. Goals can be qualitative or quantitative, and apply to both the development process and final product. Requirements specify necessary system capabilities and can be functional, for performance or interfaces. High-level goals and requirements are often expressed in terms of quality attributes like reliability, efficiency and usability.
The document discusses several software engineering process models. It begins by defining a generic process model with five framework activities: communication, planning, modeling, construction, and deployment. It then describes different types of process flows (linear, iterative, evolutionary, parallel). Next, it discusses prescriptive process models in more detail, including the waterfall model, incremental process models, and evolutionary models like prototyping and spiral. For each model, it provides an overview and highlights advantages and disadvantages.
The document provides an overview of software engineering. It defines software engineering as applying scientific principles and methods to the development of software. The document then discusses the need for software engineering due to factors like managing large or scalable software, cost management, and dynamic nature of software. It also covers key concepts in software engineering like product vs process, software evolution, software development life cycle (SDLC), different SDLC models like waterfall, incremental, iterative and evolutionary.
The document provides an overview of software engineering. It defines software engineering as applying scientific principles and methods to the development of software. The document then discusses the need for software engineering due to factors like managing large or scalable software, cost management, and dynamic nature of software. It also covers key concepts in software engineering like product vs process, software evolution, software development life cycle (SDLC), different SDLC models like waterfall, incremental, iterative and evolutionary models.
Lecture 2 introduction to Software Engineering 1IIUI
Ā
This document discusses key concepts in software engineering including:
- Software engineering uses a layered technology approach with tools, methods, processes, and a quality focus.
- It introduces common process frameworks and activities like planning, modeling, construction, and deployment.
- It also discusses umbrella activities that span the entire software development process such as configuration management, quality assurance, and risk management.
- Finally, it debunks some common myths among managers, customers, and practitioners regarding software projects.
Better Builder Magazine brings together premium product manufactures and leading builders to create better differentiated homes and buildings that use less energy, save water and reduce our impact on the environment. The magazine is published four times a year.
Covid Management System Project Report.pdfKamal Acharya
Ā
CoVID-19 sprang up in Wuhan China in November 2019 and was declared a pandemic by the in January 2020 World Health Organization (WHO). Like the Spanish flu of 1918 that claimed millions of lives, the COVID-19 has caused the demise of thousands with China, Italy, Spain, USA and India having the highest statistics on infection and mortality rates. Regardless of existing sophisticated technologies and medical science, the spread has continued to surge high. With this COVID-19 Management System, organizations can respond virtually to the COVID-19 pandemic and protect, educate and care for citizens in the community in a quick and effective manner. This comprehensive solution not only helps in containing the virus but also proactively empowers both citizens and care providers to minimize the spread of the virus through targeted strategies and education.
This is an overview of my current metallic design and engineering knowledge base built up over my professional career and two MSc degrees : - MSc in Advanced Manufacturing Technology University of Portsmouth graduated 1st May 1998, and MSc in Aircraft Engineering Cranfield University graduated 8th June 2007.
Cricket management system ptoject report.pdfKamal Acharya
Ā
The aim of this project is to provide the complete information of the National and
International statistics. The information is available country wise and player wise. By
entering the data of eachmatch, we can get all type of reports instantly, which will be
useful to call back history of each player. Also the team performance in each match can
be obtained. We can get a report on number of matches, wins and lost.
Sachpazis_Consolidation Settlement Calculation Program-The Python Code and th...Dr.Costas Sachpazis
Ā
Consolidation Settlement Calculation Program-The Python Code
By Professor Dr. Costas Sachpazis, Civil Engineer & Geologist
This program calculates the consolidation settlement for a foundation based on soil layer properties and foundation data. It allows users to input multiple soil layers and foundation characteristics to determine the total settlement.
2. Social Learning Process
ā¢ Software is embodied knowledge that is initially dispersed,
tacit and incomplete.
ā¢ In order to convert knowledge into software, dialogues are
needed between users and designers, between designers and
tools to bring knowledge into software.
ā¢ Software development is essentially an iterative social
learning process, and the outcome is āsoftware capitalā.
2
3. What / who / why is
Process Models?
ļ® What: Go through a series of predictable steps--- a road map that helps you
create a timely, high-quality results.
ļ® Who: Software engineers and their managers, clients also. People adapt the
process to their needs and follow it.
ļ® Why: Provides stability, control, and organization to an activity that can if left
uncontrolled, become quite chaotic. However, modern software engineering
approaches must be agile and demand ONLY those activities, controls and
work products that are appropriate.
ļ® What Work products: Programs, documents, and data
ļ® What are the steps: The process you adopt depends on the software that you
are building. One process might be good for aircraft avionic system, while an
entirely different process would be used for website creation.
ļ® How to ensure right: A number of software process assessment mechanisms
that enable us to determine the maturity of the software process. However, the
quality, timeliness and long-term viability of the software are the best
indicators of the efficacy of the process you use.
3
4. Definition of Software
Process
ā¢ A framework for the activities, actions, and tasks that are
required to build high-quality software.
ā¢ SP defines the approach that is taken as software is
engineered.
ā¢ Is not equal to software engineering, which also
encompasses technologies that populate the processā
technical methods and automated tools.
4
6. A Generic Process Model
ļ®As we discussed before, a generic process framework for
software engineering defines five framework activities-
communication, planning, modeling, construction, and
deployment.
ļ®In addition, a set of umbrella activities- project tracking and
control, risk management, quality assurance, configuration
management, technical reviews, and others are applied
throughout the process.
ļ®Next question is: how the framework activities and the
actions and tasks that occur within each activity are
organized with respect to sequence and time? See the
process flow for answer.
6
8. Process Flow
ļ®Linear process flow executes each of the five
activities in sequence.
ļ®An iterative process flow repeats one or more of the
activities before proceeding to the next.
ļ®An evolutionary process flow executes the activities
in a circular manner. Each circuit leads to a more
complete version of the software.
ļ®A parallel process flow executes one or more
activities in parallel with other activities ( modeling
for one aspect of the software in parallel with
construction of another aspect of the software.
8
9. Identifying a Task Set
ļ®Before you can proceed with the process model, a
key question: what actions are appropriate for a
framework activity given the nature of the problem,
the characteristics of the people and the
stakeholders?
ļ®A task set defines the actual work to be done to
accomplish the objectives of a software engineering
action.
ļ® A list of the task to be accomplished
ļ® A list of the work products to be produced
ļ® A list of the quality assurance filters to be applied
9
10. Identifying a Task Set
ļ®For example, a small software project requested by
one person with simple requirements, the
communication activity might encompass little more
than a phone all with the stakeholder. Therefore, the
only necessary action is phone conversation, the work
tasks of this action are:
ļ® 1. Make contact with stakeholder via telephone.
ļ® 2. Discuss requirements and take notes.
ļ® 3. Organize notes into a brief written statement of
requirements.
ļ® 4. E-mail to stakeholder for review and approval.
10
11. Example of a Task Set
for Elicitation
ļ®The task sets for Requirements gathering action for a
simple project may include:
1. Make a list of stakeholders for the project.
2. Invite all stakeholders to an informal meeting.
3. Ask each stakeholder to make a list of features and
functions required.
4. Discuss requirements and build a final list.
5. Prioritize requirements.
6. Note areas of uncertainty.
11
12. Example of a Task Set for Elicitation
ļ®The task sets for Requirements gathering action for a big
project may include:
1. Make a list of stakeholders for the project.
2. Interview each stakeholders separately to determine overall wants and needs.
3. Build a preliminary list of functions and features based on stakeholder input.
4. Schedule a series of facilitated application specification meetings.
5. Conduct meetings.
6. Produce informal user scenarios as part of each meeting.
7. Refine user scenarios based on stakeholder feedback.
8. Build a revised list of stakeholder requirements.
9. Use quality function deployment techniques to prioritize requirements.
10. Package requirements so that they can be delivered incrementally.
11. Note constraints and restrictions that will be placed on the system.
12. Discuss methods for validating the system.
ļ® Both do the same work with different depth and formality.
Choose the task sets that achieve the goal and still maintain
quality and agility. 12
13. Process Patterns
ā¢ 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.
( defined at different levels of abstraction)
1. Problems and solutions associated with a complete process
model (e.g. prototyping).
2. Problems and solutions associated with a framework activity
(e.g. planning) or
3. an action with a framework activity (e.g. project estimating).
13
14. Process Pattern Types
ā¢ Stage patternsādefines a problem associated with
a framework activity for the process. It includes
multiple task patterns as well. For example,
EstablishingCommunication would incorporate the
task pattern RequirementsGathering and others.
ā¢ 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.
Example includes SprialModel or Prototyping.
14
15. An Example of Process Pattern
ā¢ Describes an approach that may be applicable when stakeholders have a general idea of
what must be done but are unsure of specific software requirements.
ā¢ Pattern name. RequiremetnsUnclear
ā¢ Intent. This pattern describes an approach for building a model that can be assessed
iteratively by stakeholders in an effort to identify or solidify software requirements.
ā¢ Type. Phase pattern
ā¢ Initial context. Conditions must be met (1) stakeholders have been identified; (2)
a mode of communication between stakeholders and the software team has been
established; (3) the overriding software problem to be solved has been identified
by stakeholders ; (4) an initial understanding of project scope, basic business
requirements and project constraints has been developed.
ā¢ Problem. Requirements are hazy or nonexistent. stakeholders are unsure of what
they want.
ā¢ Solution. A description of the prototyping process would be presented here.
ā¢ Resulting context. A software prototype that identifies basic requirements.
(modes of interaction, computational features, processing functions) is
approved by stakeholders. Following this, 1. This prototype may evolve through
a series of increments to become the production software or 2. the prototype
may be discarded.
ā¢ Related patterns. CustomerCommunication, IterativeDesign,
IterativeDevelopment, CustomerAssessment, RequirementExtraction. 15
16. Process Assessment and Improvement
SP cannot guarantee that software will be delivered on time, meet the needs, or has the desired
technical characteristics. However, the process can be assessed to ensure that it meets a set of
basic process criteria that have been shown to be essential for a successful software engineering.
ā¢Standard CMMI Assessment Method for Process Improvement (SCAMPI) ā provides a five
step process assessment model that incorporates five phases: initiating, diagnosing, establishing,
acting and learning.
ā¢CMM-Based Appraisal for Internal Process Improvement (CBA IPI)āprovides a
diagnostic technique for assessing the relative maturity of a software organization; uses the
SEI CMM as the basis for the assessment [Dun01]
ā¢SPICEāThe SPICE (ISO/IEC15504) standard defines a set of requirements for software
process assessment. The intent of the standard is to assist organizations in developing an
objective evaluation of the efficacy of any defined software process. [ISO08]
ā¢ISO 9001:2000 for Softwareāa generic standard that applies to any organization that
wants to improve the overall quality of the products, systems, or services that it provides.
Therefore, the standard is directly applicable to software organizations and companies.
[Ant06]
16
17. Prescriptive Models
ā¢ Originally proposed to bring order to chaos.
ā¢ Prescriptive process models advocate an orderly approach to software
engineering. However, will some extent of chaos (less rigid) be beneficial
to bring some creativity?
That leads to a few questions ā¦
ā¢ If prescriptive process models strive for structure and order (prescribe a set
of process elements and process flow), 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?
17
18. The Waterfall Model
18
It is the oldest paradigm for SE. When requirements are well
defined and reasonably stable, it leads to a linear fashion.
(problems: 1. rarely linear, iteration needed. 2. hard to state all requirements explicitly.
Blocking state. 3. code will not be released until very late.)
The classic life cycle suggests a systematic, sequential approach
to software development.
19. The V-Model
19
A variation of waterfall model
depicts the relationship of
quality assurance actions to
the actions associated with
communication, modeling and
early code construction
activates.
Team first moves down the left
side of the V to refine the
problem requirements. Once
code is generated, the team
moves up the right side of the
V, performing a series of tests
that validate each of the
models created as the team
moved down the left side.
21. The Incremental Model
ā¢ When initial requirements are reasonably well defined, but
the overall scope of the development effort precludes a
purely linear process. A compelling need to expand a
limited set of new functions to a later system release.
ā¢ It combines elements of linear and parallel process flows.
Each linear sequence produces deliverable increments of
the software.
ā¢ The first increment is often a core product with many
supplementary features. Users use it and evaluate it with
more modifications to better meet the needs.
21
22. Evolutionary Models
ā¢ Software system evolves over time as requirements often change
as development proceeds. Thus, a straight line to a complete end
product is not possible. However, a limited version must be
delivered to meet competitive pressure.
ā¢ Usually a set of core product or system requirements is well
understood, but the details and extension have yet to be defined.
ā¢ You need a process model that has been explicitly designed to
accommodate a product that evolved over time.
ā¢ It is iterative that enables you to develop increasingly more
complete version of the software.
ā¢ Two types are introduced, namely Prototyping and Spiral
models. 22
23. Evolutionary Models: Prototyping
ā¢ When to use: Customer defines a set of general objectives but does not identify detailed
requirements for functions and features. Or Developer may be unsure of the efficiency
of an algorithm, the form that human computer interaction should take.
ā¢ What step: Begins with communication by meeting with stakeholders to define the
objective, identify whatever requirements are known, outline areas where further
definition is mandatory. A quick plan for prototyping and modeling (quick design) occur.
Quick design focuses on a representation of those aspects the software that will be
visible to end users. ( interface and output). Design leads to the construction of a
prototype which will be deployed and evaluated. Stakeholderās comments will be used
to refine requirements.
ā¢ Both stakeholders and software engineers like the prototyping paradigm. Users get a feel
for the actual system, and developers get to build something immediately. However,
engineers may make compromises in order to get a prototype working quickly. The less-
than-ideal choice may be adopted forever after you get used to it. 23
25. Evolutionary Models: The Spiral
ā¢ It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall
model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent
engineering of software intensive systems.
ā¢ Two main distinguishing features: one is cyclic approach for incrementally growing a systemās degree of
definition and implementation while decreasing its degree of risk. The other is a set of anchor point
milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions.
ā¢ A series of evolutionary releases are delivered. During the early iterations, the release might be a model or
prototype. During later iterations, increasingly more complete version of the engineered system are
produced.
ā¢ The first circuit in the clockwise direction might result in the product specification; subsequent passes
around the spiral might be used to develop a prototype and then progressively more sophisticated versions
of the software. Each pass results in adjustments to the project plan. Cost and schedule are adjusted based
on feedback. Also, the number of iterations will be adjusted by project manager.
ā¢ Good to develop large-scale system as software evolves as the process progresses and risk should be
understood and properly reacted to. Prototyping is used to reduce risk.
ā¢ However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise. 25
27. Three Concerns on Evolutionary
Processes
ā¢ First concern is that prototyping poses a problem to project planning because of
the uncertain number of cycles required to construct the product.
ā¢ Second, it does not establish the maximum speed of the evolution. If the
evolution occur too fast, without a period of relaxation, it is certain that the
process will fall into chaos. On the other hand if the speed is too slow then
productivity could be affected.
ā¢ Third, software processes should be focused on flexibility and extensibility
rather than on high quality. We should prioritize the speed of the development
over zero defects. Extending the development in order to reach high quality
could result in a late delivery of the product when the opportunity niche has
disappeared.
27
28. Still Other Process Models
ā¢ Component based developmentāthe process to apply
when reuse is a development objective ( like spiral model)
ā¢ Formal methodsāemphasizes the mathematical
specification of requirements ( easy to discover and
eliminate ambiguity, incompleteness and inconsistency)
ā¢ Aspect Oriented software development (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) to
model and develop object-oriented system iteratively and
incrementally.
28
32. Personal Software Process (PSP)
ā¢ 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.
32
33. Team Software Process (TSP)
ļ® 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.
33