Software Engineering Introduction and Overview Essence and Accident

  • Slides: 19
Download presentation
Software Engineering Introduction and Overview Essence and Accident • Essence – difficulties inherent in

Software Engineering Introduction and Overview Essence and Accident • Essence – difficulties inherent in the nature of software • Accidents – difficulties encountered but not inherent RA 402 jcmt • Inherent Difficulties – – Complexity Conformity Changeability Invisibility CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Software Engineering Processes attempt to maximize QUALITY in the

Software Engineering Introduction and Overview Software Engineering Processes attempt to maximize QUALITY in the form of: • Reliability • Testability • Portability • Understandability • Efficiency • Modifiability • Human Engineering RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Software Engineering Processes Why? Issues concerning software quality •

Software Engineering Introduction and Overview Software Engineering Processes Why? Issues concerning software quality • Relative costs of fixing faults • Price performance factors • Product size increase leads to larger teams RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview What are the phases in the lifecycle of a

Software Engineering Introduction and Overview What are the phases in the lifecycle of a software product? • • Requirements Specifications Design Implementation RA 402 jcmt • Integration • Maintenance • Retirement CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Requirements Phase “What I need, not what I said

Software Engineering Introduction and Overview 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 RA 402 jcmt • Requirements testing – Rapid prototype – Mock-up – Partial system CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Specifications Phase What the developer wants to know: •

Software Engineering Introduction and Overview Specifications Phase What the developer wants to know: • What does the product do? • What are the constraints on the product? • Acceptance criteria RA 402 jcmt • Frequent problems with a spec: – ambiguous – incomplete – contradictory • Specifications testing – – SQA reviews CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Design Phase How does the product do what it

Software Engineering Introduction and Overview 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: – – – • Design testing – RA 402 jcmt algorithms data representations I/O interfaces data flow modules traceability CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Implementation Phase Initial CS courses have to focus on

Software Engineering Introduction and Overview Implementation Phase Initial CS courses have to focus on this element first • Code • Documentation • Tests RA 402 jcmt • Implementation testing – desk checking – test cases – reviews CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Integration Phase Putting it all together • Composition order

Software Engineering Introduction and Overview Integration Phase Putting it all together • Composition order • Integration testing – interfaces RA 402 jcmt • Testing – does it meet the specs? – product testing by SQA – acceptance testing by customer CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Maintenance Phase In the user’s hands • Why? –

Software Engineering Introduction and Overview Maintenance Phase In the user’s hands • Why? – – – operation documentation turnover • Kinds of maintenance – – Corrective Adaptive Perfective Preventive RA 402 jcmt • Maintenance testing – changes – regression testing • Retirement – cost-effective? CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Specification principles • Separate functionality from implementation – A

Software Engineering Introduction and Overview 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 RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Analysis principles and issues • What differentiates one analysis

Software Engineering Introduction and Overview 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 RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Analysis principles and issues • Analysis is information-driven –

Software Engineering Introduction and Overview Analysis principles and issues • Analysis is information-driven – First provide a mechanism for representing info then derive function and behavior – Common characteristics 1) 2) 3) 4) 5) 6) RA 402 jcmt mechanism for info domain analysis approach for functional and/or behavior representation definition of interfaces mechanisms for problem partitioning support of abstraction representation of essential and implementation views CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Testing cannot show the absence of defects, it can

Software Engineering Introduction and Overview 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. RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Testing Methods • Black-box testing – • Knowing the

Software Engineering Introduction and Overview 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. 2. 3. 4. RA 402 jcmt independent paths at least once logical decisions both true and false loops internal data structures CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Development Testing • Debugging approaches – brute force –

Software Engineering Introduction and Overview 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? RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Software Configuration Management Change is inevitable • Activities of

Software Engineering Introduction and Overview 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 RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Systems Engineering Issues Takes customer-defined goals and constraints and

Software Engineering Introduction and Overview 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. RA 402 jcmt CSE 1320 Intermediate Programming

Software Engineering Introduction and Overview Software Engineering Notes for CSE 1320 Intermediate Programming •

Software Engineering Introduction and Overview Software Engineering Notes for CSE 1320 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 Practitioner’s Approach, Pressman, Roger S. ; Mc. Graw-Hill, Inc. 1992 – Software Engineering, Design, Reliability, and Management, Shooman, Martin L. ; Mc. Graw-Hill, Inc. 1983 – Software Engineering Metrics and Models, Conte, S. D. , H. E. Dunsmore, V. Y. Shen; The Benjamin/Cummings Publishing Company, Inc. , 1986 RA 402 jcmt CSE 1320 Intermediate Programming