Software Engineering II Lecture 1 Fakhar Lodhi
Software Engineering - IEEE 1.The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. 2.The study of approaches as in 1.
‘all aspects of software production’ - Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production. -Sommerville Software Engineering
A software engineer is challenged to produce high-quality software with finite amount of resources and to a predicted schedule and budget.
Law of diminishing returns Making the engineering decision! Benefit Cost
Software Engineering Software Engineering is not just about producing software, but about producing software in a COST-EFFECTIVE manner.
The Balancing Act! Potentially conflicting requirements Cost vs. Efficiency Cost vs. Reliability Efficiency vs. User-interface Challenge is to balance these requirements.
Software Development Loop Problem Definition Solution Integration Technical Development Status Quo
The name of the game is continuous change and evolution in all dimensions!
Well-Engineered Software Provides the required functionality Reliable User-friendly Cost-effective Efficient Maintainable
Breakdown of Effort Cost - Software Cost Estimation by Capers Jones No. ActivityEffort 1Requirements3.84% 2Prototyping4.50% 3Architecture2.25% 4Project Plans1.33% 5Initial Design3.84% 6Detailed Design4.50% 7Design Reviews3.02% 8Coding13.50% 9Reuse acquisition1.13% 10Package Purchase1.69% 11Code Inspection4.50% 12Independent V&V5.42% 13 Configuration Mgt. 0.41% 14 Integration 2.71% 15 User Documentation 9.67% 16 Unit Testing 4.50% 17 Function Testing 4.50% 18 Integration Testing 3.84% 19 System Testing 3.38% 20 Beta Testing 3.02% 21 Acceptance Testing 1.94% 22 Independent Testing 3.38% 23 Quality Assurance 4.50% 24 Installation and Training 1.94% 25 Project Management 6.75%
Effort Breakdown Project Management 8.08% Requirements 14.43% Design 11.36% Coding 13.50% SQA 30.64% SCM 13.02% Integration 6.54% Misc. ~3%
Software Engineering Practices Software product realization Software project management Software process management Software quality assurance Software configuration management
Management Construction project planning and management configuration management quality assurance installation and training etc. Requirements Design Coding Testing Maintenance etc.
Quality Focus Process TOOLSTOOLS Task Set Method A Software Engineering Framework
Common Process Framework Umbrella Activities Framework Activities TASKS MILESONES, DELIVERABLES SQA POINTS Task Sets
The Process A software process is a road map that helps you create a timely, high quality result. It is the way we produce software Provides stability and control Work Product –Programs, documents, and data produced as a consequence of the software engineering activities
Process Maturity SEI – Software Engineering Institute 5 maturity levels Capability Maturity Model (CMM)
INITIAL – Ad hoc Process REPEATABLE – Project Management DEFINED – Process Definition MANAGED – Process Measurement OPTIMIZED – Process Improvement CMM Maturity Levels
Goals Abilities Key Process Areas (KPAs) Methods for monitoring implementation Commitments Activities Methods for verifying implementation
Software Configuration Management Software Quality Assurance Software subcontract Management Level 2 KPAs
Software project tracking and oversight Software project planning Requirement management Level 2 KPAs - Continued
Peer reviews Inter-group coordination Software product Engineering Integrated software management Level 3 KPAs
Level 3 KPAs - Continued Training program Organization process management Organization process focus
Software quality management Quantitative process management Level 4 KPAs
Process change management Technology change management Defect prevention Level 5 KPAs
Software Lifecycle Models The way you organize your activities Lifecycle model is a series of steps through which the product progresses
1.Vision – focus on why 2.Definition – focus on what 2. Development – focus on how 3. Maintenance – focus on change Software Engineering Phases VisionDefinitionDevelopmentMaintenance