This document provides an overview and introduction to software engineering. It discusses the inherent difficulties in software including complexity, conformity, changeability and invisibility. It also covers the phases of the software lifecycle from requirements to retirement. The phases include requirements, specifications, design, implementation, integration, maintenance and retirement. It discusses processes used in software engineering to maximize quality through reliability, portability, efficiency and other factors.
This document provides an overview and introduction to software engineering. It discusses the inherent difficulties in software including complexity, conformity, changeability and invisibility. It also covers the phases of the software lifecycle from requirements to retirement. The phases include requirements, specifications, design, implementation, integration, maintenance and retirement. It discusses processes used in software engineering to maximize quality through reliability, portability, efficiency and other factors.
This document provides an overview and introduction to software engineering. It discusses the inherent difficulties in software including complexity, conformity, changeability and invisibility. It also covers the phases of the software lifecycle from requirements to retirement. The phases include requirements, specifications, design, implementation, integration, maintenance and retirement. It discusses processes used in software engineering to maximize quality through reliability, portability, efficiency and other factors.
This document provides an overview and introduction to software engineering. It discusses the inherent difficulties in software including complexity, conformity, changeability and invisibility. It also covers the phases of the software lifecycle from requirements to retirement. The phases include requirements, specifications, design, implementation, integration, maintenance and retirement. It discusses processes used in software engineering to maximize quality through reliability, portability, efficiency and other factors.
Essence and Accident Inherent Difficulties Complexity Conformity Changeability Invisibility Essence difficulties inherent in the nature of software Accidents difficulties encountered but not inherent Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Software Engineering Processes attempt to maximize QUALITY in the form of: Reliability Portability Efficiency Human Engineering
Testability Understandability Modifiability
Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Software Engineering Processes Why? Issues concerning software quality Relative costs of fixing faults Price performance factors Product size increase leads to larger teams Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming What are the phases in the lifecycle of a software product? Requirements Specifications Design Implementation
Integration Maintenance Retirement Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Requirements Phase What I need, not what I said I needed What does the problem require in terms of the solution? Written document Customer driven Requirements testing Rapid prototype Mock-up Partial system Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Specifications Phase What the developer wants to know: What does the product do? What are the constraints on the product? Acceptance criteria
Frequent problems with a spec: ambiguous incomplete contradictory Specifications testing SQA reviews
Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Design Phase How does the product do what it is supposed to do? Analysis of the problem Structured analysis : decomposing problem by how data is manipulated (acted upon) Object-oriented analysis: decomposing problem by how data is represented
Developer must make design decisions about: algorithms data representations I/O interfaces data flow modules Design testing traceability
Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Implementation Phase Initial CS courses have to focus on this element first Code Documentation Tests Implementation testing desk checking test cases reviews Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Integration Phase Putting it all together Composition order
Integration testing interfaces Testing does it meet the specs? product testing by SQA acceptance testing by customer Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Maintenance Phase In the users hands
Maintenance testing changes regression testing
Retirement cost-effective? Why? operation documentation turnover Kinds of maintenance Corrective Adaptive Perfective Preventive Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Specification principles Separate functionality from implementation A process-oriented systems spec language is required A spec must encompass the system of which the SW is a component A spec must encompass the environment in which the system operates A system spec must be a cognitive model A spec must be operational The spec must be tolerant of incompleteness and augmentable A spec must be localized and loosely coupled Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Analysis principles and issues What differentiates one analysis technique from another? hueristics and notions point of view notation modeling approach
What things are common about analysis methods? hierarchical representation external and internal interfaces design and implementation foundation no focus on constraints or validation Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Analysis principles and issues Analysis is information-driven First provide a mechanism for representing info then derive function and behavior Common characteristics 1) mechanism for info domain analysis 2) approach for functional and/or behavior representation 3) definition of interfaces 4) mechanisms for problem partitioning 5) support of abstraction 6) representation of essential and implementation views Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Testing Testing cannot show the absence of defects, it can only show that software defects are present. 1. Testing is a process of executing a program with the intent of finding an error. 2. A good test case is one that has a high probability of finding an as yet undiscovered error. 3. A successful test is one that uncovers an as yet undiscovered error.
Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Testing Methods Black-box testing Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational.
White-box or glass-box testing Knowing the internal workings of a product, tests can be conducted to ensure that "all the gears mesh". 1. independent paths at least once 2. logical decisions both true and false 3. loops 4. internal data structures
Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Development Testing Debugging approaches brute force backtracking cause elimination Before you fix 1. Is the cause of this bug also reproduced elsewhere? 2. What new bug might I be putting in? 3. What would have prevented this bug? Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Software Configuration Management Change is inevitable Activities of SCM 1. ID change 2. control change 3. ensure that change is properly implemented 4. report change to others SCM output programs documentation data structures SCM is not the same as maintenance Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Systems Engineering Issues Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces, design constraints and information structure that can be allocated to each of the generic system elements available. Software Engineering Introduction and Overview RA402 jcmt CSE1320 Intermediate Programming Software Engineering Notes for CSE1320 Intermediate Programming Sources The Mythical Man-Month, Brooks, Frederick P.; Addison-Wesley Publishing Company, (Reprint)1982 No Silver Bullet: Essence and Accidents of Software Engineering,, Computer, Vol. 20, No. 4 (April 1987) pp. 10-19 Software Engineering,Schach, Stephen R.;Aksen Associates Incorporated Publishers, 1990 Software Engineering, A Practitioners Approach,Pressman, Roger S.;McGraw-Hill, Inc. 1992 Software Engineering, Design, Reliability,and Management,Shooman, Martin L.;McGraw-Hill, Inc. 1983 Software Engineering Metrics and Models, Conte, S.D., H.E. Dunsmore, V.Y. Shen;The Benjamin/Cummings Publishing Company, Inc., 1986