Software development activities
l
Note “activities” – not “steps”
l
Often happening simultaneously
l
Software development activities Note activities not steps l - - PowerPoint PPT Presentation
Software development activities Note activities not steps l Often happening simultaneously l Not necessarily discrete l Planning: mostly study the requirements 1. Domain analysis: study the problem area 2. System design:
l
l
l A subset of system engineering l Covers all software development activities,
l Also includes various management tasks
l Guided by CS theory
Requirements Analysis System Design Program Design Coding Testing (several steps) Operation & Maintenance
Requirements Analysis System Design Unit Testing
Integration Testing Maintenance Delivery System Testing Coding Program Design
In a waterfall lifecycle, high risk issues such as integration and load test may be tackled late. Time Potential impact of risks being tackled
Requirements Analysis Design Implement Integrate & System Test
l Research conclusion: it is wise to do some
l Spiral Model
l Frequent
Requirements Analysis System Design Program Design Coding Unit & Inte- gration Testing Operation & Maintenance
System Testing Acceptance Testing Validate requirements Verify design
Requirements Design Implementation & Test & Integration & More Design Final Integration & System Test Requirements Design 4 weeks (for example) The system grows incrementally. Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1. Iterations are fixed in length, or
timeboxed
. Time Implementation & Test & Integration & More Design Final Integration & System Test
In an iterative lifecycle, high-risk issues are tackled early, to drive down the riskiest project elements. Time Potential impact of risks being tackled Iteration
l Agility – observed to be a common feature of
l Different projects need different processes l Generally better to focus on skills, communication,
l Fruitful to consider it “a cooperative game of
l See Agile Manifesto: http://agilemanifesto.org/
l Very popular agile development process today
l Mostly means adhering to some basic principles
l See www.extremeprogramming.org
l Means: analyzing and designing a
l What things or ideas are involved? l How do objects/concepts interact?
l Means not: function-oriented
l What to do, and how to do it? l Mostly worry about “flow of control”
l Not easy to do it well
l OOA – investigation of the problem
l OOD – find solution to the problem
l UML – Unified Modeling Language
l CASE tools – computer-aided software
l Can generate code from modeling diagrams l Can do reverse engineering, …
l Try to focus on domain concepts at first
l Create and maintain a steady stream of artifacts
l Itemize system functions and characteristics l Write use cases, and assign use cases to
l Early iteration(s) –draft project (report and
l Identify classes, class attributes, and associations l Identify system behavior (as a “black box”)
l Specify the way objects will behave and interact l Tie to other systems/tools as necessary
l Complete at least 1 more iteration – final project
l Also demonstrate system to class during last week of quarter