280 likes | 286 Vues
This lecture delves into the systematic approach of software engineering, emphasizing the development, operation, and maintenance of software with a focus on project management, cost-efficiency, productivity, and quality assurance, aiming for reliable, user-friendly, and maintainable software products. It covers software production aspects, cost-benefit analysis, and effort breakdown in software development, highlighting the balancing act between requirements such as cost, efficiency, and reliability while maintaining a continuous loop of problem-solving and evolution. The lecture also explores software engineering practices, project management tasks, process frameworks, quality assurance, software configuration management, and software lifecycle models to create stable and controlled software products through various maturity levels and key process areas.
E N D
Advance Software Engineering Lecture 1 Naveed Hussain
Software Engineering - IEEE • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. • The study of approaches as in 1.
Software Engineering ‘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
A software engineer is challenged to produce high-quality software with finite amount of resources and to a predicted schedule and budget.
Cost Benefit Law of diminishing returns Making the engineering decision!
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 Status Quo Technical Development Solution Integration
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 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% No. Activity Effort 1 Requirements 3.84% 2 Prototyping 4.50% 3 Architecture 2.25% 4 Project Plans 1.33% 5 Initial Design 3.84% 6 Detailed Design 4.50% 7 Design Reviews 3.02% 8 Coding 13.50% 9 Reuse acquisition 1.13% 10 Package Purchase 1.69% 11 Code Inspection 4.50% 12 Independent V&V 5.42%
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
project planning and management • configuration management • quality assurance • installation and training • etc. • Requirements • Design • Coding • Testing • Maintenance • etc. Management Construction
Method Task Set A Software Engineering Framework T O O L S Process Quality Focus
Common Process Framework Framework Activities Task Sets TASKS MILESONES, DELIVERABLES SQA POINTS Umbrella Activities
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)
CMM Maturity Levels OPTIMIZED – Process Improvement MANAGED – Process Measurement DEFINED – Process Definition REPEATABLE – Project Management INITIAL – Ad hoc Process
Key Process Areas (KPAs) • Commitments • Activities • Goals • Abilities • Methods for monitoring implementation • Methods for verifying implementation
Level 2 KPAs • Software Configuration Management • Software Quality Assurance • Software subcontract Management
Level 2 KPAs - Continued • Software project tracking and oversight • Software project planning • Requirement management
Level 3 KPAs • Peer reviews • Inter-group coordination • Software product Engineering • Integrated software management
Level 3 KPAs - Continued • Training program • Organization process management • Organization process focus
Level 4 KPAs • Software quality management • Quantitative processmanagement
Level 5 KPAs • Process change management • Technology change management • Defect prevention
Software Lifecycle Models • The way you organize your activities • Lifecycle model is a series of steps through which the product progresses
Software Engineering Phases • Vision – focus on why • Definition – focus on what 2. Development – focus on how 3. Maintenance – focus on change Vision Definition Development Maintenance