3. the scope of S/W engineering the software process
UNIFIED PROCESS
-software development is process.
-most software developers follow phases of lifecycle.
-organizations phases differently such as requirements and specification phase =
analysis phase
-in 1999, published complete OO analysis and design methodology – unified 3 separate
approaches.
THE REQUIREMENTS PHASE
-aim: explore and determine
-what the client needs, not they want.
1. gain understanding of application domain (learn about specific environment)
2. build a functional/operational model for S/W
-check what is the limit by clients: deadline, parallel running, portability, reliability, rapid
response time, cost.
-final product is not what client wants because : miscommunication, it is not what they
need, misunderstanding requirements, missed deadlines, moving target
ANALYSIS PHASE (SPECIFICATION)
-aim: analyze and refine requirements – formal contract
-requirements artifacts in simple human language for client, and analysis artifacts must
be precise and complete for designers.
-specification documentation is important to be corrected and completed because of
testing and maintenance.
-specification document must not have: contradictions, omissions, vague statements,
and incompleteness.
Software PROJECT MANAGEMENT PLAN (SPMP)
-it is including budget and time estimating, deliverables, and milestones DESIGN PHASE
-aim: to refine analysis phase until material is in a form that can be coded/implemented
by programmers. To show “how” the software will do.
-many non-functional requirements must be finalized
CLASSICAL (STRUCTURED) VS. OBJECT ORIENTED
-objects introduced in analysis workflow
-interaction among objects are determined OO analysis workflow
-objects are designed in OO design workflow and coded during OO implementation
workflow
-OO workflows are very smooth because of the interaction between the phases.
*structured paradigm
-analysis: determine what the product is supposed to do
-architectural design: determine and extract software modules
-detailed design: design modules
-implementation: code the modules in an appropriate programming language
*OO paradigm
-analysis: determine what the product is supposed to do and extract the classes
-design: design the objects and interaction among them
-implementation: code the modules in an appropriate programming language
THE IMPLEMENTATION PHASE
-use selected implementation language
-large software: development (coding) first and then implementation later
-when modules are integrated, new problems may show up.
TEST PHASE
-test is responsibility of every developer, maintainer and SQA group.
-traceability of artifacts (specification doc. -> requirements doc.)
POST-DELIVERY MAINTENANCE
-essential component of software development (the most expensive phase) -open-ended design -> flexible product -> easier to maintain
-lack of documentation
-design must include future maintenance
1. unit testing: test the new module with new data
2. integration testing: run modified software with new test
3. regression testing: run modified software with old test data and compare results with
pre-change test results
RETIREMENT
-software can be un-maintainable because:
1) hardware and OS keep changing (should be implemented in it)
2) documents missing or inaccurate
3) a huge change in design has occurred
DESIGN ARTIFACTS
-bridge between analysis and implementation
-design doc. -> specification doc.
-client representative usually not present
IMPLEMENTATION ARTIFACTS
-each component is tested during implementation – unit testing
-completed components are added incrementally and one at a time
-integration testing is done to make sure the combined components work together: top
down-nothing to show the client until all is done, bottom up-always have something to
show client.
-when product appears to be complete, it is tested as a whole – product testing
-after completed product is installed on client’s computer, they test it – acceptance
testing
-implementation doc -> design doc.
-COTS (commercial off-the shelf) software is released for testing by prospective clients
-alpha: employees of vendor company use product for free
-beta release: corrected alpha version is used in beta testing. Closer to the final. Advantage of alpha or beta release
-get a head start, using new product
-learn it before competitors
Disadvantage of alpha or beta release
-errors can slow down daily activity, damage company dBase, and cause frustration.
4. TEAM ORGANIZATION
TEAM ORGANIZATION
-specification and design may be done individually, but software development and
implementation always done by different teams.
-incorrect order of arguments, number of arguments and type of arguments can go
wrong.
*Brooks law: adding additional programmers to a team when product is late, can make
product even later
DEMOCRATIC TEAM APPROACH (Weinberg, 1970s)
-team members “review” each other’s code and looking for faults
-start through team until the end
-team members don’t “evaluate” other members’ “performance”
*advantage
1. positive att
More
Less