CS 325: Software Engineering January 12, 2016 Introduction • • • • • Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process Model Defining Software Engineering Software engineering as a discipline is focused on the research, education, and application of engineering processes and methods to significantly increase software productivity and software quality while reducing software costs and time to market. CS 325 January 12, 2016 Introduction Page 2 CS 325 January 12, 2016 Introduction Page 3 Requirements Usability Maintainability Modifiability Safety Portability Estimation Testability Design Patterns Scalability Team Process Architecture Styles Computability Queueing Theory Algorithms Formal Specification Language Syntax/Semantics Cryptography Correctness Proofs Automatic Programming Network Analysis Machine Learning Compilers OS Paging/Scheduling Complexity Computer scientists are primarily concerned with the design of algorithms, languages, hardware architecture, systems software, applications software, and tools. Computer Science Software Engineering SWE vs. CS Software engineers learn much more about creating high-quality software in a systematic, controlled, and efficient manner. Software Life-Cycle Software Development Process System Requirements Definition Definition & Relationships of Subsystems Software Requirements Analysis Identification of Software Capabilities Software Design Structure of Interface & Algorithms Coding & Unit Testing Modules Developed & Tested Independently Integration & Integration Testing Module Collaboration & Cooperation Acceptance Testing Confirmation That Requirements Are Met Maintenance CS 325 January 12, 2016 Introduction Page 4 Customer Support After Delivery Software Life-Cycle Software Quality Assurance Validation Verification Have we built the right software? Have we built the software right? Static Analysis Prototyping Proofs of Correctness Model Checking Testing Unit Test Integration Test Automated Test Robustness Analysis Consistency Checking CS 325 January 12, 2016 Introduction Page 5 Regression Test System Test Beta Test Acceptance Test Usability Test Modeling Formal Methods Code Inspection Goal Analysis Specification Inspection Software Life-Cycle Software Project Management CS 325 January 12, 2016 Introduction Page 6 Software Processes A software process is a division of software development work into distinct phases containing activities with the intent of better planning and management. Evolutionary Waterfall Prototyping CS 325 January 12, 2016 Introduction Page 7 Unified Spiral Agile Waterfall Process Model System Requirements Definition Software Requirements Analysis Software Design Waterfall Pros Waterfall Cons Accommodates updates to large systems that rarely need major changes Project cancellation is rarely mitigated by early achievements in design and analysis, only by late achievements in late code and testing Permits pipelining of tasks (requirements analysis, design, coding, testing) Early feedback from users is difficult to obtain since early iterations are not available to be examined Makes planning, scheduling, and tracking progress simple Strict development stages and milestones make revisiting earlier stages difficult Coding & Unit Testing Integration & Integration Testing Acceptance Testing Maintenance CS 325 January 12, 2016 Introduction Page 8 The sequential approach of the waterfall model is rather old-fashioned but still effective in some circumstances.