Transcript Development
Computing and SE II
Chapter 3: Software Development Activities
Er-Yu Ding
Software Institute, NJU
Main Contents
1.
2.
3.
Activities of Software Development
Software Lifecycle and Process Models
Principles and Methodologies of Software
Development
1. Software Development Activities
What we intend
Problems
Solution( Software)
1. Software Development Activities
Problems/Solutions
Real world
analysis
Problem
Methods
Techniques
Languages
Tools
…
design
Installing Solution machine
maintaining
Expected world
Solution
General machine
1. Software Development Activities
Requirements
Analysis
Design
Implementation
Testing
Installing and Maintenance
1. Software Development Activities
Requirements Analysis Requirements Engineering
目的:
需求工程的困难之处:
(1)不存在描述明确的E;
(2)不存在确定的针对S的评估标准R;
(3) E, R S 是一个创造性的过程。
需求工程的主要工作
描述明确的问题域特性E; 定义良好的系统行为S ; 预期的需求R
需求工程的目的就是根据E,构建S,使得 E, S R
研究问题背景,描述问题域特性E
需求开发,确定 R
构建解系统,描述解系统行为S,使得
理解现实为第一目的,保证S的质量为第二目的 E, S R
Mainly Result : SRS (Software Requirements Specification)
“What the product is supposed to do”
1. Software Development Activities
Design
Aim: establishing software structures based on software entities,
that is a model of the whole system to be developed
Tasks of Design
Architecture Design
Detail (System) Design
Making interfaces usability
Design decisions dramatically impact system quality
System is decomposed in components
Definition of component functionalities
Definition of component interfaces
HCI Design
The definition of the global architecture of the system
Alternatives, tradeoff
Mainly Result
Model
architecture model, System model
Specification
Architecture specification, system component specification, HIC
documents
“How the product does it”
1. Software Development Activities
Implementation
Aim: implementation of individual components in a
programming language
It starts from the component specifications developed
during design
Interfaces defined in the design should be respected by the
implementation of the component
Tasks
Program design
Code should be well documented and easy to read, flexible,
correct and reliable
Programming
Debug
Result should be an executable program
1. Software Development Activities
Testing
Aim: validating and verifying the qualities of software products
Tasks
Testing does not necessarily follow the implementation phase
Testing design
Unit testing: verification of component implementations against their
interfaces
Integration testing: verification of component integration against
system architecture
System testing: validation of the extent to which the requirements
specification is fulfilled
Testing and implementation may run in parallel
Testing may even affect the requirements analysis phase, where
test cases may be derived directly from the requirements
specification
Testing result: errors and faults
1. Software Development Activities
Installing and Maintenance
Aim: keeping the system operational after delivery to the
customer
Tasks
Corrective : identification and removal of faults
Adaptive: modifications needed to achieve interoperability with other
systems
Perfective: incorporation of new features, improved performance and
other modifications to increase customer satisfaction
Preventive: modifications to mitigate possible degradation of usability,
maintainability, etc.
Installing, training, maintenance
The maintenance phase needs to be considered part of the
development process
Even though the activities within maintenance are requirements
analysis, design, implementation and testing
1. Software Development Activities ---Members of Development Team
Software development steps
Developer
Requirement Analysis
Analyst
Architecture Design
Architect
Detail (system) Design
HCI Design
Designer
Program design
Program implementation
Programmer
Unit testing
Testing design
Integration testing
Tester
System (accept) testing
Installing (System deliver)
Maintenance
Trainer and
Supporter
1. Software Development Activities
--Cost of Activities (1)
Software Development Activities
--Cost of Activities (2)
Software Development Activities
--Cost of Activities (3)
1. Software Development Activities
--Cost of Activities (4)
Requirements &
Analysis – 18%
Development – 25%
Integration –
29%
Design – 19%
Post-Delivery
Maintenance – 75%
Implementation/
Coding – 34%
Total Product Costs
Breakout of
Development Costs
2. Software Lifecycle and Process Models
Life cycle
Software systems evolve as the environment around
them evolves
The development process then becomes cyclic: the
software lifecycle
Life cycle describing the actual steps performed on a
specific product
Life-cycle model
The steps (phases) to follow when building software
A theoretical description of what should be done
2. Software Lifecycle and Process Models
Software Process Models
A development process is described in a process
model
Structured set of activities required to develop a
software system
Activities vary depending on organization and type of
system being developed
Must be modeled in order to be managed
There are many process models described in the
literature
There are many ways of organizing development
2. Software Lifecycle and Process Models
Build-and-fix model
Waterfall model
Iterative Models
Incremental model
Evolutionary
2. Software Lifecycle and Process Models
Build and Fix Model
Properties
Advantage
No planning or analysis
The working program is
the only work product
Appropriate for small
programs written by one
person
Disadvantage
Understandability and
maintainability decrease
rapidly with increasing
program size
Totally unsatisfactory
Need a life-cycle model
2. Software Lifecycle and Process Models
Waterfall Model
Characterized by
Advantages
Documentation and clearly defined phases
Disadvantages
Sequential steps (phases)
Feedback loops (between two phases in
development)
Documentation-driven
Complete and frozen specification document upfront often not feasible in practice
Customer involvement in the first phase only
Sequential and complete execution of phases
often not desirable
The product becomes available very late in the
process
Applicability
Only appropriate when the requirements are wellunderstood
2. Software Lifecycle and Process Models
Iterative Models
Build software in multiple iterations
Two flavors
Incremental
Incremental Delivery
RAD
Evolutionary
Evolutionary development
Prototyping
Spiral Model
Transformation Model
RUP
Agile
2. Software Lifecycle and Process Models
Incremental Delivery
User requirements are prioritized and the highest priority
requirements are included in early increments
Each release adds more functionality, i.e., a new increment
The waterfall model is employed in each phase
2. Software Lifecycle and Process Models
Incremental Delivery
Advantages
Operational quality portion of product within weeks
Smaller capital outlay, rapid return on investment
Comprehensive spec up front can be used as a contract
Disadvantage
May be hard to create a comprehensive requirements
spec up front if a domain not well understood
2. Software Lifecycle and Process Models
Rapid Application Development (RAD)
Key characteristics:
Iterative approach
User involvement
Prototyping
Sophisticated tools
Small development teams, and
Time boxing: fixed time frame in which activities are carried
out
A cycle of four phases
Joint Requirements Planning (JRP)
Joint Application Design (JAD)
Construction
Cutover
<3 months
2. Software Lifecycle and Process Models
Rapid Application Development (RAD)
JRP Workshop: objective is to get the requirements right
the first time
JAD Workshop(s): user and SWAT (Skilled With Advanced
Tools) team involvement
Construction with SWAT team
this requires end-user participation
Highly skilled personnel, use advanced tools, reuse as much
as possible (COTS, etc.)
Dedicated, they are in control (multi-skills, very effective)
Cutover: testing, training and preparing the next cycle
2. Software Lifecycle and Process Models
Evolution Development
New versions implement new (increments) and
evolving requirements
2. Software Lifecycle and Process Models
Evolution Development
Advantages
Early increments act as a prototype to help elicit requirements for
later increments
Constant customer involvement and validation
Allows for good risk management - lower risk of overall project failure
Project can be continued as long as each increment delivers value
Agile software development methods use the evolutionary model
Disadvantages
Build-and-fix danger
Can use agile development practices (unit test, increment planning, etc.)
to avert this danger
Not appropriate when a larger part of a system needs to be
commissioned from a supplier
Need a comprehensive requirements spec as a contract up front
2. Software Lifecycle and Process Models
Prototyping
Motivation: Requirements elicitation is difficult
Advantages
Software is developed because the present situation is
unsatisfactory
However, the desirable new situation is as yet unknown
User needs are better accommodated
Problems are detected earlier
Disadvantages
Prototyping risk
The design is of less quality
2. Software Lifecycle and Process Models
The Spiral Model
2. Software Lifecycle and Process Models
The Spiral Model
Waterfall model plus risk analysis and prototyping
preceding each phase and evaluation following each phase
Inner cycles denoting early system analysis and prototyping
Outer cycles denoting the rest of the classic waterfall
If all risks cannot be resolved, the project is immediately
terminated
Appropriate only for big projects (high management
overhead)
First proposed by Boehm in 1987
2. Software Lifecycle and Process Models
Transformation models
Many variations of process models have been
proposed, and appear in the proceedings of the
international software process workshops
Include fully interconnected life cycle models that
accommodate transitions between any two
phases subject to satisfaction of their pre- and
post-conditions, as well as compound variations
on the traditional life cycle and continuous
transformation models.
2. Software Lifecycle and Process Models
RUP: There are three central elements that define
RUP
1. An underlying set of principles for successful software
development.
2. A framework of reusable method content and process
building blocks.
These principles are the foundation on which the RUP has
been developed.
A family of method plug-ins defines a method framework from
which you create your own method configurations and tailored
processes.
3. The underlying method and process definition language.
A unified method architecture meta-model that provides a
language for describing method content and processes.
2. Software Lifecycle and Process Models
RUP Components
Six best practices
Four phases
Static structure of the process
Nine workflows
Core process workflows
Core supporting workflows
2. Software Lifecycle and Process Models
Agile: Agile proponents believe
Current software development processes are too
heavyweight or cumbersome
Current software development is too rigid
Too many things are done that are not directly
related to software product being produced
Difficulty with incomplete or changing requirements
Short development cycles (Internet applications)
More active customer involvement needed
CMM focuses on process
2. Software Lifecycle and Process Models
Agile
Agile methods are considered
Several agile methods
Lightweight
People-based rather than Plan-based
No single agile method
XP most popular
No single definition
Agile Manifesto closest to a definition
Set of principles
Developed by Agile Alliance
2. Software Lifecycle and Process Models
Use of the Models in Practice
3. Principles and Methodologies of
Software Development
From Principles to Tools
TOOLS
METHODOLOGIES
METHODS AND
TECHNIQUES
PRINCIPLES
3. Principles and Methodologies of
Software Development
Methodologies
Notation
Technology
Approach to solve problem of modeling, composite of many technologies
For example, OOA
Methodology
Modeling things using notations
For example, Object modeling
Method
Graphic mapping of one or many technique models
For example, UML
A world view to do different work
For example object-oriented methodology
Tool
Software system which support at least one notation or technology
For example, Rational Rose
3. Principles and Methodologies of
Software Development
Methodologies
Structural Methodologies
Object- Oriented Methodologies
3. Principles and Methodologies of
Software Development
现实世界的复杂模型
复杂总是简单部分的组合
简单部分又是更简单部分的组合
简单组成复杂的过程存在层次性
每个最小简单部分独立负责完成一系列相关任务
相比较而言,每个组合内部各部分的关系比其内部
与外部的关系都更紧密
各个部分通过一致的接口进行组合,即一个部分对
其它部分的所知仅仅是接口
3. Principles and Methodologies of
Software Development
结构化
复杂世界->复杂处理过程(事情的发生发展)
简单->过程(可表达的“函数”)
简单->复杂(函数调用)
面向对象
任何系统都是能够完成一系列相关目标和任务的对象
对象完成一个任务时会请求一系列其他对象帮助其完成一些子目标
其他对象为了完成其任务又会请求将子目标更细分为子子目标,并
请求其他对象帮助完成
子目标的分解和责任分担一直进行直到最后产生的子部分可以映射
到计算实体
计算实体:对象
层次关系:聚合(组合)、继承
组合接口:一个对象暴露的接口
3. Principles and Methodologies of Software Development
--Core Software Engineering Principles
Provide value to the customer and the user
KIS—keep it simple!
User-centric
Value-based
Engineering perspective: Cost-Benefit Effective
Maintain the product and project “vision”
What you produce, others will consume
Be open to the future
Plan ahead for reuse
Think!
3. Principles and Methodologies of Software Development
--
Communication Practices
Principles
Listen
Prepare before you communicate
Facilitate the communication
Face-to-face is best
Take notes and document decisions
Collaborate with the customer
Stay focused
Draw pictures when things are unclear
Move on …
Negotiation works best when both parties win.
3. Principles and Methodologies of Software Development
--
Planning Practices
Principles
Understand the project scope
Involve the customer (and other stakeholders)
Recognize that planning is iterative
Estimate based on what you know
Consider risk
Be realistic
Adjust granularity as you plan
Define how quality will be achieved
Define how you’ll accommodate changes
Track what you’ve planned
3. Principles and Methodologies of Software Development
--
Modeling Practices
We create models to gain a better understanding of
the actual entity to be built
Analysis models represent the customer
requirements by depicting the software in three
different domains: the information domain, the
functional domain, and the behavioral domain.
Design models represent characteristics of the
software that help practitioners to construct it
effectively: the architecture, the user interface, and
component-level detail.
3. Principles and Methodologies of Software Development
--
Analysis Modeling Practices
Analysis modeling principles
Represent the information domain
Represent software functions
Represent software behavior
Partition these representations
Move from essence toward implementation
3. Principles and Methodologies of Software Development
--
Design Modeling Practices
Principles
Design must be traceable to the analysis model
Always consider architecture
Focus on the design of data
Interfaces (both user and internal) must be designed
Components should exhibit functional independence
Components should be loosely coupled
Design representation should be easily understood
The design model should be developed iteratively
3. Principles and Methodologies of Software Development
--
Construction Practices
Preparation principles: Before you write one
line of code, be sure you:
Understand of the problem you’re trying to solve (see
communication and modeling)
Understand basic design principles and concepts.
Pick a programming language that meets the needs of
the software to be built and the environment in which it
will operate.
Select a programming environment that provides tools
that will make your work easier.
Create a set of unit tests that will be applied once the
component you code is completed.
3. Principles and Methodologies of Software Development
--
Construction Practices
Coding principles: As you begin writing code, be sure you:
Constrain your algorithms by following structured programming
[BOH00] practice.
Select data structures that will meet the needs of the design.
Understand the software architecture and create interfaces that are
consistent with it.
Keep conditional logic as simple as possible.
Create nested loops in a way that makes them easily testable.
Select meaningful variable names and follow other local coding
standards.
Write code that is self-documenting.
Create a visual layout (e.g., indentation and blank lines) that aids
understanding.
3. Principles and Methodologies of Software Development
--
Construction Practices
Validation Principles: After you’ve completed
your first coding pass, be sure you:
Conduct a code walkthrough when appropriate.
Perform unit tests and correct errors you’ve uncovered.
Refactor the code.
3. Principles and Methodologies of Software Development
--
Construction Practices
Testing Principles
All tests should be traceable to requirements
Tests should be planned
The Pareto Principle applies to testing
Testing begins “in the small” and moves toward
“in the large”
Exhaustive testing is not possible
3. Principles and Methodologies of Software Development
--
Deployment Practices
Principles
Manage customer expectations for each increment
A complete delivery package should be assembled
and tested
A support regime should be established
Instructional materials must be provided to endusers
Buggy software should be fixed first, delivered later
The End
Recommend paper
《Process Models in Software Engineering》
Next Lecture
Requirements Engineering