is each requirement sonsistent with the overall objective for the system/product
have all requiremtnt been specified at the proper level of abstraction? that is , do some requirements provide a level technical detail taht is inappropriate at this stage
is the requiremetn really necessary or does it represent an add-on feature that may not be essential to the objective of teh system
is each requirement bounded and unambiguous
does each requirement have attibution: taht is, is a source noted for each requirement
do any requirement conflict with other requirement
is wach requirement achieveable in the technical rnvironment that will house the system or product
is each requirement testable, once implemented
does the requirements model proprely reflect the information, funciton and behavior of the system to be built
has the requirements model been “partitioned” in a way that exposes progressively more detailed information about the system
have requirement patterns been used to simmplify teh requiremens model. habe all patterns been properly balidated: are all patterns consistent withe customer requirement
Requirement management
requiremetn monition
distributed debugged: uncover errors and determines their cause
run-time verfication: determines whether software meets user goal
runtime validation: assesses whether evolving software meets their goal
business activity monitoring: evaluate wheterh a system satisfies goals
evolution and co-design: provide information to stakeholders as the system evolves
Non-functional requirements
Diagrams
Requirement modeling
Domain Analysis
目标
描述客户需要什么
为软件设计奠定基础
定义在软件完成后可以被确认的一组需求
Scenario-based modeling
use case
scenario that describe a “thread of usage” for a system
actors represent roles perple or devices play as teh system function
users can play a number of different roles for a given scenario
activity diagram even swimming lane diagrams
Class-based modeling
Content
nouns and verbs
classes are determined by noun or nouns phrase
Menifestation of analysis classes
external entities
things
occurences or events
roles
organization units
places
structures
potentcial classes
retaineed information
needed serbices
multiple attribure
common attribute
common operations
essential requirements
attriburtes and operation
attribute
attribure describe a class that has been selected for inclusion in the analysis model
operation
source
do a grammatical parse of a processing narrative and look at the verbs
catagory
manipulate data
perform a computation
inquire about the state of an object
monitor an object for the occurence of controlling event
Class Responsibility Collaborator(CRC) models
usage
provides a simple means for identifying and organizing the classes that are relevant to system or production requirements
modeling
A CRC model is really a collection of standard index cards that represent classes
the cards are divided into three sections: class name, responsibility, collaborator
example
Behavioral modeling
mainly include state diagram and sequence diagram
Design concepts
design and qauality
goal
teh design must implement all of the explicit requirement
the design mustt be readable, understandable guide
the design should provide a complete picture of software
quality guide line
design should exhibit an architecture that
has been created using recognizable architectureal styles or patterns
is composed of components that exhibit good design characteristics
can be implement in an evolutionary fashion
A desin should be modular
a design should contain distinct representation
a design should lead to data structure that are appropriate for the classes to be implemented and are drawn from recognizable data patterns
a design should lead to components that exhibit independent functional characteristics
a design should lead to interfaces that reduce the complexity of connections between components and with the external ecvironment
a design should be derived using a repeatable method that is derived by information obrtained during software requirements analysis
a design should be represented usingt a notation that effectively communicated its meaning
design principle
lazy
Fundamental concept
abstraction: data procedure, control
architecture: the overall structure of the software
patterns: convey the essence of a proven design solution
separation of concerns: any complex problem can be more easily
modularity: compartmentalization of data and function
hiding: controlled interfaces
functional independence: single minded function and low coupling
refinement: elaboration of detail for all abstraction
aspects: a mechanism for understanding how global requirements affect design
refactoring: a reorganization technique that simplifies the desin
OO desing concepts:
desing classes: provide design detail that will enable analysis classes to be implemented
design model
OO Concepts
design classes
entity classes : refined from analysis class
boundary classes: developed during desing to create the interface
controller classes:are desing to manage
the creation or update of entity objects
the instantiation of boundary objects as they obtain information from entity objects
complex communication between set of objects
validation of data communicated between objects or between the user adn teh appplication
inheritance
all responsibilities of a superclass is immediately inherited by all subclasses
Messages
stimulate some behavior to occur in the receiving object
Polumorphism
a characteristic that greatly reduces the effort required to extend the design
Design methods
Architecture Design
What is architecture
the software architecrure of a program or comprting system is the sruucture or structures of teh system, which comprise the software components, teh externally visible properties of those components, and the relationships among them
Architecture style
Encompass
a set of components that perform a funciton required by a ssytem
a set of connector that enablecommunication coordination and cooperation among components
constraints that define how components can be integrated to form the system
semantic models that enable a desiner to understand teh overall properties of a system by analyzing the known properties of its constituent parts
catagory
data-centered ar5chitectures
data flow architecture
call and return architecture
object oriented architecture
layered architecture
Architecture design
the software myst be placed into context
a set of architectureal archetypes should be identified
the designer specifies the structure of the system by defining and refining software
Agility and architecture
to avoid rework, user stories are used to create and evolve an architecrural model before coding
hubrid models which alow sogtware arhchitects contributing users stories to the evolving storyboard
well run agil projects include delivery of work products during each spring
review code emerging from the sprint can be a useful form of architecrural review
Component level design
What is a component
OO view: a set of collaborating classes
process logic, the internal data structure and an interface
Basic design pricinple
The open-closed principle
open for extension and clossed for modification
The Liskov subsititution principle
subclasses should be substitudable for their base classes
Dependency inversion principle
depend on abastaction rather than concretion
The interface segregation principle
many client-specific interfaces are better than one general purpose interface
Cohesion and Coupling
Cohesion
definition
cohesion implies that a component or class encapsulate only attribures and operations that are closely related to one another and to the class or component itself
level of cohesion
functional
layer
communicational
sequential
procedural
temporal
utility
Coupling
definition
a qualitative measure of the degree to which classes are conneted to one another
level of coupling
content
common
control
stamp
data
routine call
type use
inclusion or import
external
Component-based software engineering
principle
a library of components must be avaialbe
components should hava a consistent structure
activity
component qualification
component adaptation
component composition
componoent update
User interface design
Golden rules for UI design
User intgerface design process
interface analysis
Design evaluation cycle
Software quality
What is quality
an effective sotwware process applie in a manner that cteates a userful product that provides measurable valuse for those who produce it and those who use it
McCall’s triangle of quality
The cost of quality
Achieving software quality
achieving
sotware quality is the result of good project management and solid engineering practice
to build high quality software you must understand the proble to be solved and be capable of creating a quality design the conforms to the problem requirement
eliminating architectural flaws during desing can improve quality
assurance
project management: project plan includes explicit techniques for quality and change management
quality control: series of inspections, reviews, and tests used to ensure conformance fo a work product ro its specification
quality assurance: consists of the auditing and reporting procedures used to provide management with data needed to make proactive decisions
Testing strategy and techniques
Testing concepts
verification: refer to the set of tasks that ensure thath software correctly implements a specific function
validation: refer to a different set fof tasks that ensure that the software that has been built is traceable to customer reuqirement
V model and V&V
the v model
the v&v model
Testing Strategies
diagram
strategy
conventional software
teh module is our initial focus
integration of modules follows
for oo software
our focus when “testing in small” changes form an individual module to an OO class that encompass attributes and operations and implies commnunication and collaboration
time line
Testing techniques
testing steps
before developing a test, we should identifu the foals of the test
decide how to carry out a relevant test. We have to decide which test is teh most suitable and what sort of test items need to be used
develop teh test case
determine the expected results of the test
execute the test cases
ccompare teh test results to the expected result
driver
provide
setting input parameters, and the environment
executing the unit
reading the output parameters
typical behavior
suply a constant input or a random input
supply a ‘canned’ input
record interim results and traces
stub
provide
the unit under test may depend on another component that may not have been completed yet or would introduce undesirable into the test. Stub simulate part of the program called by the unit
typical behavior
exit immediately
return a constant ouput or a random output
return a value from the user
print ‘module x entered’
bottom-up strategy
sandwich testing
regression testing
re-execution of some subset fo tests that have already been conducted to ensure that changes have not propagated unintended side effects
smoke testing
a common aproach for creating “daily builds” for product software
OO testing strategy
operation within the class are tested
the state behaviro of teh calss is examined
thread-base testing
use-based testing
cluster testing
Security engineering & SCM
Why security engineering
security is a perquisite to system integrity, availability, reliablity and safety
security provides teh mechanism that enable a system to protect its assets from attack
assets are system resources that have value to its stakeholders
attacks take advatage of bulnerability that allow unauthorized system access
it is different to make a system more secure by responding to buging reports, security must be designed in from the beginning testing appropriate
SCM concepts
Baselines
definition
a specification or product that has been formaly reviewed and agreed upon, that thereafter serves as teh vbasis for futher development, and that can be changed only through formal change control procedures
SCI
SCM process
diagram
Project managemetn concepts
4P
people: the most important element of a sucessful project
product: teh software to be beilt
process:teh set fo framework activities and software engineering tasks to get tehjob done
project: all work required to make teh product a reality
W
5
H
H
W^5HH
W5HH
why is teh system being developed
what will be done
when will it be accomplished
who is responsible
where are they organizationlly located
how will teh job be done technically and managerially
how much of each resurce will be needed
Process and project metrics
Why do we measure
assess teh status of an ongoing project
track potential risks
uncober problem areas beform they go critial
adjust work flow or tasks
evaluate the project team’s ability to control quality of software work products
Process measurement and metrics
measurement
outcome
process metrics
quality related
productivity-related
statistical SQA data
defect remocal efficiency
reuse data
Project metrics
input:measures of teh resources required to do the work
output: meawsures of teh deliverable or work prodducts ctreated during teh softwre engineering proceess
results: measures that inducated teh effectiveness of the deliverable
typical of metrics
error per unit
defect per unit
pages of document per unit
errors per person-month
errors per review person-month
Project estimation & Scheduling
Scope
definition
scopes refer to all teh work involved in creating teh products of the project and teh processes used to cteated them
describe
the software socpe describes
the funcitons adn features that are to be delivered to end-users
the data that are intput adn output
the “content” that is presented to users as a consequence of using teh software
teh performance, constrains, interface, and reliablity that bound the system
mian techniques
a narrative description of software socpe is developed ager commnucation with all stakeholders
A set of use-case is developed by end-user
Work Breakdown Structure (WBS)
definition
a work breakdown structure is a deliverabl-oriented grouping of the work involved im a project that defines teh total scope of the project
int provides the basis for
planning and managing project schedules, costs, and changes
risk analysis
organizaitonal structure
measurement
Line Of Code(LOC)
advantage
simple to measure
easy to automate
disadvantage
only defined for code, not teh design
bad desing may cause excessive LOC
Language dependent
Does not account for functionality or complexity
Function Point (FP)
advantage
usable in teh earliest requirements phases
independent of programming language, product desing, or development style
user’s view rather than miplementation view
can be used to measure thenon-coding activities
There exists a large body of historical data
a well documented method
disadvantage
cannot directly count an existing product’s FP content
Hard to automate
FP do not reflect language, desing, or style differences
FP are desinged for estimating commercial data processing applications
subjective counting
Constuctive Cost Modeling (COCOMO) estimation
use experience to estimate
Scheduling steps
defining task sets
sequencing activities
drawing project network diagrams
crutical path analysis
using Gantt chats for scheduling
shcedule tracking
Task network
Gantt charts
Milestone
you know what is milstome right?
Risk analysis
Project risk
catagory
Project risk
technical risk
business risk
marketing risk
strtegic risk
management risk
budget risk
Reactive Risk Management
mitigation: plan for additional resources in anticipation of fire fighting
fix on failure: resource are found and applied when the risk strikes
crisis management: failure does not respond to applied resources and project is in jeopardy
Proacctive risk management
formal risk analyssi is performed
organization correct the root cause of risk
TQM concepts and statistical SQA
examining risk sources that lie beyond the bounds of the software