180 likes | 199 Views
This summary covers the fundamental aspects of software engineering, including the nature of software, analysis, design, testing, methodology, metrics, team dynamics, and project planning. It explores the characteristics of software, process models, use-case diagrams, class diagrams, testing methodologies like Extreme Programming, metrics application, team structures, and project planning considerations. The overview delves into various topics essential for understanding and excelling in the field of software engineering.
E N D
Software Engineering Summary James Gain (jgain@cs.uct.ac.za) http://people.cs.uct.ac.za/~jgain/courses/SoftEng/
Overview • Summarize: • The Nature of Software Engineering • Analysis • Design • Testing • Methodology • Metrics • Teams • Project Planning
The Nature of Software • Software is a set of items or objects forming a “configuration” that includes: • Programs • Documents • Data • Software Characteristics: • Complexity • Conformity (to existing systems) • Changeability • Invisibility (difficult to visualize)
Analysis analysis design code test
Valuation Trader Use-Case Diagrams • Graphically shows use-cases, actors and their relationships. Includes Relationship Analyze Risk <<incloudes>> Actor Price Deal <<includes>> Capture Deal Communication Relationship Use Case <<extends>> Extends Relationship Limits Exceeded
CRC Cards class name: Overlay Image class type: Thing class characteristics: abstract, aggregate, sequential, transient responsibilities: collaborators: Resolution Edge Place Reference Image Save Black-and-white image
Class Diagrams Multiplicity Association Class Label
Sequence Diagrams Event Object Active Life Line
State Diagrams State Ready Event Initial Pseudostate stop [user quits] /ctr := 0 Transition Done Guard Action stop Final State
Design Summary analysis design code test
Package Diagrams Image Package Reference Picture Mosaic Image Mosaic Generator Dependancy
Testing Summary analysis design code test
Methodology • Extreme Programming in a nutshell: • Lightweight: little documentation or administration overhead • Agile: able to adapt quickly to changes in user requirements • Best for small scale projects with uncertain or evolving requirements • XP Style: • Iterative development (about a dozen iterations of 1-3 weeks each) of a complete system on each iteration • Just in time planning (does not plan much beyond the current iteration) • Emphasis on testing (unit tests are written before functionality) • Carefully considers people issues (stand-up meetings, pair programming, no overtime)
Metrics • Attempt to objectively quantify Software Engineering • In order to characterize, evaluate, predict and improve the process and product a metric baseline is essential • Application of Metrics: • Process: Measure and correct the software process applied by your organization over several projects. Use Function Point normalization to allow comparison across projects • Project: Create reliable estimates of time and cost. Track and control the project schedule • Product: Monitor and adjust aspects of the software as it is created. Object-oriented SE has specific metrics for analysis, design and coding
Teams DD = Democratic Decentralized, CC = Controlled Centralized, CD = Controlled Decentralized
Project Planning • Scope—understand the problem and the work that must be done. • Estimation—how much effort? how much time? • Risk—what can go wrong? how can we avoid it? what can we do about it? • Schedule—how do we allocate resources along the timeline? what are the milestones? • Control strategy—how do we control quality? how do we control change? Project Scope Estimates Risks Schedule Control strategy Software Project Plan