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