Presentation on theme: "CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process."— Presentation transcript:
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process Model
Defining Software Engineering CS 325 January 13, 2015 Page 2 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.
SWE vs. CS CS 325 January 13, 2015 Page 3RequirementsUsabilityMaintainabilityModifiabilitySafetyPortabilityEstimationTestability 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 Software Engineering Computer Science Computer scientists are primarily concerned with the design of algorithms, languages, hardware architecture, systems software, applications software, and tools. Software engineers learn much more about creating high-quality software in a systematic, controlled, and efficient manner.
Software Life-Cycle CS 325 January 13, 2015 Page 4 Software Development Process System Requirements Definition Software Requirements Analysis Software Design Coding & Unit Testing Integration & Integration Testing Acceptance Testing Maintenance Definition & Relationships of Subsystems Identification of Software Capabilities Structure of Interface & Algorithms Modules Developed & Tested Independently Module Collaboration & Cooperation Confirmation That Requirements Are Met Customer Support After Delivery
Software Life-Cycle CS 325 January 13, 2015 Page 5 Software Quality Assurance Verification Have we built the software right? Validation Have we built the right software? Testing Unit Test Integration Test Automated Test Acceptance Test Usability Test Regression Test System Test Beta Test Static Analysis Proofs of Correctness Robustness Analysis Consistency Checking Prototyping Modeling Formal Methods Model Checking Goal Analysis Specification Inspection Code Inspection
Software Processes CS 325 January 13, 2015 Page 7 A software process is a division of software development work into distinct phases containing activities with the intent of better planning and management. Waterfall Prototyping Evolutionary Spiral Unified Agile
Waterfall Process Model CS 325 January 13, 2015 Page 8 The sequential approach of the waterfall model is rather old-fashioned but still effective in some circumstances. System Requirements Definition Software Requirements Analysis Software Design Coding & Unit Testing Integration & Integration Testing Acceptance Testing Maintenance Waterfall ProsWaterfall Cons Strict development stages and milestones make revisiting earlier stages difficult Early feedback from users is difficult to obtain since early iterations are not available to be examined Project cancellation is rarely mitigated by early achievements in design and analysis, only by late achievements in late code and testing Makes planning, scheduling, and tracking progress simple Permits pipelining of tasks (requirements analysis, design, coding, testing) Accommodates updates to large systems that rarely need major changes