Chapter2-Software Process
Chapter2-Software Process
Software Process
A set of activities and associated results which produce a software product. Activities include:
Software specification Software development Software validation Software evolution
Methods
Provide the technical "how to" for building software; rely on a set of basic principles; encompass a broad array of tasks; include modeling activities
Tools
Provide automated or semi-automated support for the process and methods (i.e., CASE tools)
Umbrella Activities
Software requirements management Software project planning Software project tracking and oversight Software quality assurance Software configuration management Formal technical reviews Risk management Measurement process, project, product Reusability management (component reuse) Work product preparation and production
6
What is a Process?
(Webster) A system of operations in producing something; a series of actions, changes, or functions that achieve an end or a result (IEEE) A sequence of steps performed for a given purpose
Planning
Establishes a plan for software engineering work; addresses technical tasks, resources, work products, and work schedule
Deployment
Involves delivery of software to the customer for evaluation and feedback
10 10
Component-level Design
Defines the data structures, algorithms, interface characteristics, and communication mechanisms allocated to each software component
11 11
12
"Agile
Model tends to be simpler than prescriptive models; emphasis is on incremental development, customer satisfaction, and minimal process overhead
"Mathematical
Formal Method Model stresses mathematical rigor and formal proofs that product is meeting carefullydefined goals
13
14
16
17
Disadvantages
Not realistic approach Complete system delivered at the end Difficult to finalize requirements at early stage Difficult cost and time estimations
18
Example:
Incremental model RAD (Rapid Application Development)
20
RAD
Incremental software process model Emphasizes short development cycle Faster development Use of Computer Assisted Software Engineering (CASE) Tools Component based construction System delivered in short time (2 to 3 months) Useful where requirements are well understood and scope is limited
21
RAD (contd)
Essential Aspects of RAD:
Methodology
Methods to be used in this model
People
Type of project team required
Management
Managements commitment in providing faster and timely increment
Tools
Computerized tools
22
RAD (contd)
Difficult to manage for large projects Commitment of customer and the development team System cannot be modularized High technical risks
23
Increment #2
Communicatio n Plannin g
Modeling
Constructio n
Deployment
Increment #3
Communicatio n
Plannin g Modeling
Constructio n
Deployment
24 24
25 25
Outline Description
Development
Intermediate Version
Validation
Final Version
27
Throw-away Prototyping
Objective is to understand the customers requirements and develop better requirements definition.
28
29
Prototyping
When only general objectives are known Development issues are unknown Often used as a technique within other process models Better understand what is to be built when requirements are fuzzy
30
Prototyping (contd)
Communication
Quick Plan
31
Prototyping (contd)
Issues
Customer considers the prototype a working system Less than ideal choice becomes an integral part of the system
32
Spiral Model
Proposed by Boehm (1988) Process is represented as a spiral Each loop in the spiral represents a phase of the software process In early iterations the release might be a paper model or prototype
33
34
35
37
Conclusion
Evolutionary process models focus on changing needs and customer satisfaction Certain issues are:
Project planning concerns in prototyping Speed of evolution? Balance between flexibility, extensibility, speed of development and quality
38
Incremental Models:
Requirements are established initially development activities are iterative.
39
40
CBD (contd)
Software applications are assembled from components from a variety of sources; the components themselves may be written in several different programming languages and run on several different platforms. COTS
Commercial off-the-shelf software components developed by vendors who offer them as products.
41
CBD (contd)
Modeling
Identification of components.
Available components are researched and evaluated for the domain. Component integration issues. Software architecture is designed. Components are integrated into architecture. Comprehensive testing.
42
CBD (contd)
Conclusion
Software reusability 70% reduction is software cycle 84% reduction in software cost Increased productivity
43
45
AOSD (contd)
OOP encourages software re-use. Although OOP has met great success in modeling and implementing complex software systems, it has its problems.
47
AOSD (contd)
Practical experience with large projects has shown that programmers may face some problems with maintaining their code because it becomes increasingly difficult to cleanly separate concerns into modules.
48
AOSD (contd)
Aspect Oriented Programming (AOP) is a promising new technology for separating concerns specifically crosscutting concerns that are usually hard to do in object-oriented programming.
49
AOSD (contd)
What is a concern? A concern is any piece of interest or focus in a program. separation of concerns (SoC) is the process of breaking a computer program into distinct features that overlap in functionality as little as possible.
50
AOSD (contd)
Cross-cutting concerns are those parts of program that affect other concerns. Example:
Logging-logging affects all parts of the system that are being logged. Logging thereby crosscuts all logged classes and methods.
51
AOSD (contd)
AOP is a new technology for separating crosscutting concerns into single units called aspects. An aspect is a modular unit of crosscutting implementation. It encapsulates behaviors that affect multiple classes into reusable modules.
52
AOSD (contd)
A distinct aspect-oriented process has not yet matured. May adopt characteristics of both spiral(evolutionary nature) and concurrent (parallel nature) process models.
53
Unified Process
Came during the evolution period of Object Oriented software development methods (1990s) Contains features of OOA and OOD. UML- Unified Modeling Language
It was created to support the OO design and modeling.
54
UP (contd)
Unified Process is an iterative and incremental software development process framework. Not only a process but an extensible framework that can be customized for specific organizations and projects.
55
UP (contd)
Phases:
Inception Elaboration Construction Transition Production
56
UP (contd)
Inception
Customer communication Planning
Identify resources, assess risks, defines schedule
Rough architecture
A tentative outline of major sub-systems, functions and features that populate them.
57
UP (contd)
Elaboration
Customer communication Modeling activity Expands the use cases. Expands the architecture to:
Use case model, analysis model, design model, implementation model and deployment model.
58
UP (contd)
Construction
Develop software components (that make the use cases operational). Complete the analysis and design models. Implement all functions and features for that increment. Conduct unit testing for the components Integrate components.
59
UP (contd)
Transition
Create user manuals, guidelines, installation procedures. Software is given to users for beta testing. Get user feedback The increment is now a useable software release.
60
UP (contd)
Production
On going use of the software is monitored. Provide support Defect reports and request for changes are submitted and evaluated.
61
UP (contd)
Phases do not occur in a sequence but are concurrent. One increment is in production and work on next increment is already started.
62
UP (contd)
Conclusion
Recognizes the importance of customer communication. Emphasizes architecture. Iterative and incremental process flow.
63