The document discusses different software process models, including the waterfall model, incremental development model, and integration and configuration model. The waterfall model represents the software development process as sequential phases such as requirements, design, implementation, and testing. The incremental model develops the system through a series of versions that add new functionality. The integration and configuration model focuses on reusing existing components and configuring them for a new system. The document provides details on the typical activities and advantages of each model.
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
49 views
Week 2 Software Process
The document discusses different software process models, including the waterfall model, incremental development model, and integration and configuration model. The waterfall model represents the software development process as sequential phases such as requirements, design, implementation, and testing. The incremental model develops the system through a series of versions that add new functionality. The integration and configuration model focuses on reusing existing components and configuring them for a new system. The document provides details on the typical activities and advantages of each model.
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 39
SI201415
SOFTWARE ENGINEERING 4 Credits Week 2 Software Process
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Outline • Software Process Models • Process Activities • Coping with Change • Process Improvement • Agile Software Development
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Introduction • A software process is a set of related activities that leads to the production of a software system • there is no universally applicable software process. The process used in different companies depends on the type of software being developed, the requirements of the software customer, and the skills of the people writing the software.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Introduction although there are many different software processes, they all must include, in some form, the four fundamental software engineering activities that introduced. 1. Software specification The functionality of the software and constraints on its operation must be defined. 2. Software development The software to meet the specification must be produced. 3. Software validation The software must be validated to ensure that it does what the customer wants. 4. Software evolution The software must evolve to meet changing customer needs. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Introduction • However, when describing processes, it is also important to describe who is involved, what is produced, and conditions that influence the sequence of activities: 1. Products or deliverables are the outcomes of a process activity. For example, the outcome of the activity of architectural design may be a model of the software architecture. 2. Roles reflect the responsibilities of the people involved in the process. Examples of roles are project manager, configuration manager, and programmer. 3. Pre- and postconditions are conditions that must hold before and after a process activity has been enacted or a product produced. For example, before architectural design begins, a precondition may be that the consumer has approved all requirements; after this activity is finished, a postcondition might be that theUML models describing the architecture have been reviewed.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models • A software process model (sometimes called a Software Development Life Cycle or SDLC model) is a simplified representation of a software process • Each process model represents a process from a particular perspective and thus only provides partial information about that process. • For The example, a process activity model shows the activities and their sequence but may not show the roles of the people involved in these activities.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models • These generic models are high-level, abstract descriptions of software processes that can be used to explain different approaches to software development. • You can think of them as process frameworks that may be extended and adapted to create more specific software engineering processes.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models 1. The waterfall model This takes the fundamental process activities of specification, development, validation, and evolution and represents them as separate process phases such as requirements specification, software design, implementation, and testing.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models 1. Requirements analysis and definition The system’s services, constraints, and goals are established by consultation with system users. They are then defined in detail and serve as a system specification. 2. System and software design The systems design process allocates the requirements to either hardware or software systems. It establishes an overall system architecture. Software design involves identifying and describing the fundamental software system abstractions and their relationships.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models 3. Implementation and unit testing During this stage, the software design is realized as a set of programs or program units. Unit testing involves verifying that each unit meets its specification. 4. Integration and system testing The individual program units or programs are integrated and tested as a complete system to ensure that the software requirements have been met. After testing, the software system is delivered to the customer. 5. Operation and maintenance Normally, this is the longest life-cycle phase. The system is installed and put into practical use. Maintenance involves correcting errors that were not discovered in earlier stages of the life cycle, improving the implementation of system units, and enhancing the system’s services as new requirements are discovered. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Software Process Models 2. Incremental development This approach interleaves the activities of specification, development, and validation. The system is developed as a series of versions (increments), with each version adding functionality to the previous version.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models • Incremental software development, which is a fundamental part of agile development methods, is better than a waterfall approach for systems whose requirements are likely to change during the development process. • This is the case for most business systems and software products. Incremental development reflects the way that we solve problems.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models • Incremental development has three major advantages over the waterfall model: 1. The cost of implementing requirements changes is reduced. The amount of analysis and documentation that has to be redone is significantly less than is required with the waterfall model. 2. It is easier to get customer feedback on the development work that has been done. Customers can comment on demonstrations of the software and see how much has been implemented. Customers find it difficult to judge progress from software design documents. 3. Early delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included. Customers are able to use and gain value from the software earlier than is possible with a waterfall process. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Software Process Models 3. Integration and configuration This approach relies on the availability of reusable components or systems. The system development process focuses on configuring these components for use in a new setting and integrating them into a system.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models 1. Requirements specification The initial requirements for the system are proposed. These do not have to be elaborated in detail but should include brief descriptions of essential requirements and desirable system features. 2. Software discovery and evaluation Given an outline of the software requirements, a search is made for components and systems that provide the functionalityrequired. Candidate components and systems are evaluated to see if they meet the essential requirements and if they are generally suitable for use in the system.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Software Process Models 3. Requirements refinement During this stage, the requirements are refined using information about the reusable components and applications that have been discovered. The requirements are modified to reflect the available components, and the system specification is re-defined. Where modifications are impossible, the component analysis activity may be reentered to search for alternative solutions. 4. Application system configuration If an off-the-shelf application system that meets the requirements is available, it may then be configured for use to create the new system. 5. Component adaptation and integration If there is no off-the-shelf system, individualreusable components may be modified and new components developed. These are then integrated to create the system.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Group Discussion • We will discuss about SDLC Spiral V-Model Prototype Model Rapid Application Development • Describe about every model, Advantages, Disadvantages. • 10 Minutes for Discussion • 5 Minutes for Presentation
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities • Real software processes are interleaved sequences of technical, collaborative, and managerial activities with the overall goal of specifying, designing, implementing, and testing a software system • The four basic process activities of specification, development, validation, and evolution are organized differently in different development processes
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities • Software specification or requirements engineering is the process of understanding and defining what services are required from the system and identifying the constraints on the system’s operation and development.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities 1. Requirements elicitation and analysis This is the process of deriving the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis, and so on. This may involve the development of one or more system models and prototypes. These help you understand the system to be specified. 2. Requirements specification Requirements specification is the activity of translating the information gathered during requirements analysis into a document that defines a set of requirements. Two types of requirements may be included in this document. User requirements are abstract statements of the system requirements for the customer and end-user of the system; system requirements are a more detailed description of the functionality to be provided. 3. Requirements validation This activity checks the requirements for realism, consistency, and completeness. During this process, errors in the requirements document are inevitably discovered. It must then be modified to correctthese problems. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Process Activities • Software design and implementation • A software design is a description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between system components and, sometimes, the algorithms used. • Designers do not arrive at a finished design immediately but develop the design in stages. • They add detail asthey develop their design, with constant backtracking to modify earlier designs. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Process Activities 1. Architectural design, where you identify the overall structure of the system, the principal components (sometimes called subsystems or modules), their relationships, and how they are distributed. 2. Database design, where you design the system data structures and how these are to be represented in a database. Again, the work here depends on whether an existing database is to be reused or a new database is to be created. 3. Interface design, where you define the interfaces between system components. This interface specification must be unambiguous. With a precise interface, a component may be used by other components without them having to know how it is implemented. Once interface specifications are agreed, the components can be separately designed and developed. 4. Component selection and design, where you search for reusable components and, if no suitable components are available, design new software components. The design at this stage may be a simple component description with the implementation details left to the programmer. Alternatively, it may be a list of changes to be made to a reusable component or a detailed design model expressed in the UML. The design model may then be used to automatically generate an implementation.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities • Software validation or, more generally, verification and validation (V & V) is intended to show that a system both conforms to its specification and meets the expectations of the system customer. Program testing, where the system is executed using simulated test data, is the principal validation technique.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities 1. Component testing The components making up the system are tested by the people developing the system. Each component is tested independently, without other system components. Components may be simple entities such as functions or object classes or may be coherent groupings of these entities. Test automation tools, such as JUnit for Java, that can rerun tests when new versions of the component are created, are commonly used (Koskela 2013). 2. System testing System components are integrated to create a complete system. This process is concerned with finding errors that result from unanticipated interactions between components and component interface problems. It is also concerned with showing that the system meets its functional and non-functional requirements, and testing the emergent system properties. For large systems, this may be a multistage process where components are integrated to form subsystems that are individually tested before these subsystems are integrated to form the final system. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Process Activities 3. Customer testing This is the final stage in the testing process before the system is accepted for operational use. The system is tested by the system customer (or potential customer) rather than with simulated test data. For custom-built software, customer testing may reveal errors and omissions in the system requirements definition, because the real data exercise the system in different ways from the test data. Customer testing may also reveal requirements problems where the system’s facilities do not really meet the users’ needs or the system performance is unacceptable. For products, customer testing shows how well the software product meets the customer’s needs.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Activities • Software Evolution • The flexibility of software is one of the main reasons why more and more software is being incorporated into large, complex systems. Once a decision has been made tomanufacture hardware, it is very expensive to make changes to the hardware design.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Coping with Change • Change is inevitable in all large software projects. The system requirements change as businesses respond to external pressures, competition, and changed management priorities. • Change adds to the costs of software development because it usually means that work that has been completed has to be redone. This is called rework
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Coping with Change • Two related approaches may be used to reduce the costs of rework: • Change anticipation, where the software process includes activities that can anticipate or predict possible changes before significant rework is required. • Change tolerance, where the process and software are designed so that changes can be easily made to the system.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Coping with Change • two ways of coping with change and changing system requirements: • System prototyping, where a version of the system or part of the system is developed quickly to check the customer’s requirements and the feasibility of design decisions. • Incremental delivery, where system increments are delivered to the customer for comment and experimentation.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Coping with Change
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Coping with Change
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Improvement • Nowadays, there is a constant demand from industry for cheaper, better software, which has to be delivered to ever-tighter deadlines. • Consequently, many software companies have turned to software process improvement as a way of enhancing the quality of their software, reducing costs, or accelerating their development processes. • Process improvement means understanding existing processes and changing these processes to increase product quality and/or reduce costs and development time.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Process Improvement • Process measurement You measure one or more attributes of the software process or product. • Process analysis The current process is assessed, and process weaknesses and bottlenecks are identified. • Process change Process changes are proposed to address some of the identified process weaknesses.
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Assessment Software • The notion of process maturity was introduced in the late 1980s when the Software Engineering Institute (SEI) proposed their model of process capability maturity (Humphrey 1988). The maturity of a software company’s processes reflects the process management, measurement, and use of good software engineering practices in the company. • Capability Maturity Model (CMM)
M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software
Engineering Assessment Software • Initial The goals associated with the process area are satisfied, and for all processes the scope of the work to be performed is explicitly set out and communicated to the team members. • Managed At this level, the goals associated with the process area are met, and organizational policies are in place that define when each process should be used. There must be documented project plans that define the project goals. Resource management and process monitoring procedures must be in place across the institution. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Assessment Software • Defined This level focuses on organizational standardization and deployment of processes. Each project has a managed process that is adapted to the project requirements from a defined set of organizational processes. Process assets and process measurements must be collected and used for future process improvements. • Quantitatively managed At this level, there is an organizational responsibility to use statistical and other quantitative methods to control subprocesses. That is, collected process and product measurements must be used in process management. M. Gilvy Langgawan Putra, S.Kom.,M.MT - Software Engineering Assessment Software • Optimizing At this highest level, the organization must use the process and product measurements to drive process improvement. Trends must be analyzed and the processes adapted to changing business needs.