The Software Engineering Process Software Engineering: The practical application of computer science, management, and other sciences to the analysis, design, construction, and maintenance of software and the documentation necessary to use, operate, and maintain the delivered software system. The software Development Crisis - For every 6 large software projects put into operation, 2 are cancelled The average software development project overshoots its schedule by half Three quarters of all large systems are “operating failures.” (Don’t function as intended or are not used at all) 1 Software Engineering – A Layered Technology 1. Software Engineering must rest on an organizational commitment to quality, which leads to continued improvements in the software engineering process. 2. A Process defines a framework for a set of key process areas that must be established to ensure effective delivery of software engineering technology. The Key process areas form the basis for management control of software projects. These include tasks such as: - 3. Determining Deliverables Establishing milestones Software Quality Assurance Software Configuration (change) Management Software Engineering methods provide the technical how to for building software. Methods include a wide array of tasks such as: - 4. Requirements Analysis Design Program Construction Testing Maintenance Software Engineering Tools provide automated or semi-automated support for the process and the methods. - Example: CASE (Computer Aided Software Engineering) 2 The Software Engineering Paradigm (Process Model): A software engineering strategy that encompasses the process, methods, and tools used for system development. Classes of Process Models include: 1. The Linear Sequential Model (also known as classic life cycle model and waterfall model): - The oldest and most commonly used software engineering model - Demands a systematic, sequential approach to software development that begins at the system level and progresses through analysis, design, coding, testing, and maintenance. - Problems with linear models: 1. Real projects rarely follow sequential model 2. Difficult for customers to state all requirements explicitly 3. Customer does not get the feel for system until the end of development. 2. The Prototyping Model - A mechanism for determining customer requirements - Developer and customer meet and define the overall objectives for the software, identify whatever requirements are known, and outlines areas where further definition is mandatory. - A quick design and implementation is carried-out (mostly representing graphical user interfaces) - The customer/developer review the prototype making adjustments to and/or adding requirements 3 - Iteration occurs as prototype is tuned to satisfy the needs of customer. - Problems with Prototyping: 1. Customer thinks system is ready or just needs a few adjustments to be useable 2. Software quality was not considered in development 3. No well prepared design is available 4. Maintenance is difficult 3. - Other Models: Incremental model Develop complete sub-systems to be built on later - Evolutionary model (Spiral model): Combine sequential and prototyping models - The Formal Method Model: Use rigorous mathematical notation to specify, develop, and verify a computer-based system. Software Project Management(covered next chapter) Software Quality Assurance (SQA) 4 - - - Conformance to - explicitly stated functional and performance requirements, - explicitly documented development standards, and - implicit characteristics that are expected of all professionally developed software. Quality is built into the system starting with methods and tools used to help analyze and design the system, and not reached after the system has been developed. Quality factors: - - Correctness Reliability Efficiency Integrity Usability Maintainability Flexibility Testability Portability Reusability Interoperability Activities for quality assessment and control: - Formal Technical Reviews (RTF) Software Testing Change Control Measurement Record Keeping and Recording Software Configuration Management (SCM) - - The art of identifying, organizing, and controlling modifications to the software being built by a programming team. SCM Activities: - Identify change Control change (improve quality and reduce error) Ensure correct implementation of change Report change to those who may be effected 5 The Technical Spectrum The methodologies and disciplines for developing software projects. 1. Software Engineering falls into three different approaches (categories) of development: Conventional Development View software as an information transform and approach each problem using a input-process-output viewpoint. 2. Object-Oriented Development Consider each problem as a set of classes and work to create a solution by implementing a set of communicating objects that are instantiated from these objects. 3. Formal Methods Describe the problem in mathematical terms, enabling rigorous evaluation of completeness, consistency, and correctness. 1. 2. 3. 4. 5. Technical Software Engineering Tasks Include: Requirements Analysis (problem Definition) Design Code Construction Testing Maintenance 6 TESTING: A process of executing a program with the intent of finding an error Can help determine that a program is functioning correctly (according to requirements) Good testing includes different levels of testing: Low-level (unit testing): - Verify that a small segment of source code has been correctly implemented Intermediate-Level (integration testing): - Discover errors in the interfaces between modules High-level (system testing): - Validate major system functions against customer requirements - Further Issues of Software Engineering: Reuse Reengineering Retooling 7
© Copyright 2024 Paperzz