Download presentation
Presentation is loading. Please wait.
Published byLisa Lester Modified over 9 years ago
1
CSCI 3428: Software Engineering Tami Meredith Chapter 1 Why Software Engineering
2
I am WRONG (sometimes...) There is no guaranteed correct, no fail, approach, method, technique, tool, etc. QUESTION EVERYTHING! What worked last time might not work this time. IMPROVISE, ADAPT, OVERCOME! Your strongest tool is your ability to THINK! The quality of piece of software is equivalent to the quality of the thought that went into it.
3
Problem Solving 1. Define the problem space: a) Input: What we have to work with, tools, resources b) Output: What we must produce, goal c) Constraints and limitations d) Evaluation: How can we tell when we have achieved the goal and the output is correct? 2. Develop and evaluate solution(s) 3. Implement the solution 4. Evaluate the result 5. Repeat as necessary
4
Software Engineering Software Engineering is Problem Solving 90% of the work is figuring out what to do, how to do it, and making sure you have it right 10% of the work is programming the solution. Skipping steps leads to massive disasters! Goal: Produce a profitable product Method: Use basic problem solving Key: Avoid risks!
5
Assumptions Write a program to count to 10 #include void main() { int i; for (i = 0;i<10;i++) printf("%d\n",i); } User interface, language, output (voice), speed of counting etc. You must explore the problem space fully before you start to program The more you think, the less you program, the more likely you have a satisfactory solution Assumptions frequently indicate that you FAILED TO EXPLORE THE PROBLEM SPACE
6
Terms Analysis: Problem decomposition Synthesis: Solution Construction Fault: A mistake made during development Failure: Deviation of the system from correct "Bug": Coding fault Safety Critical: Human life depends upon S/W Mission Critical: Task completion depends on S/W COTS: Commercial Off The Shelf CSP: Commercial Software Product cf., contracted, commissioned, custom S/W
7
Models of Quality Transcendental: We can recognise but not define quality User: Fitness for a purpose, how well it works Manufacturing: Conformance to specification Product: Conformance to metrics (e.g., complexity, efficiency, MTF) Value-Based: What's it worth?
8
(Some) Components of Quality Correctness Efficiency Maintainability Flexibility Reusability Security Reliability Usability Testability Portability Accessibility Interoperability
9
Software Development The basic and necessary stages of development: 1. Requirements analysis and definition 2. System design 3. Program design 4. Implementation 5. Unit testing 6. Integration testing 7. System testing 8. Delivery 9. Maintenance
10
Waterfall Model
11
Software Developers Analysts – Domain experts vs. S/W experts Designers, Architects Programmers System & DB Administrators Librarian, Build-Master Testers – Technical vs. User Trainers, Customer Service Representatives Technical Writers & Illustrators Managers – Business, MIS
12
"Changes in Development" 1996 w.r.t. 1970s mainframe systems Criticality of time-to-market for CSPs Shift of costs from hardware to software Increasing ability of hardware ("power") Extensive use of networking Availability of OOP GUIs, Windowing, Mice Unpredictability of the waterfall model
13
"Changes in Development" 2015 Criticality of time-to-market for Service Oriented Software Increasing ability of hardware Mandatory use of networking Luxury vs. necessity of computing Pad computing, smart phones Massive amounts of storage (Hard drives, Cloud) Unpredictability of the all models, agile methods Changes in system complexity and size Automatic update
14
The Discipline of Classical S/E Abstraction and hierarchies: layered views with various levels of detail Analysis and design methods and notations: structured design + flowchart, OOP + UML User interface prototyping Software architecture Software process Reuse and refactoring Measurement and evaluation Tools and IDEs
15
Discussion A. Software engineering is a science. Application of key principles and techniques with rigour and discipline will ensure the best quality product. B. Software engineering is an art. It requires creativity and imagination to develop effective solutions. Every problem is different and needs a different approach. C. Software engineering is bunk! A good programmer will know what to do and can do the job without the endless overhead that process creates.
16
Famous Moments in Software Engineering Ariane 5 1. strict precondition 1: {Set."x"=FLPT and Set."y"=INT16 and -32768 <= x <= +32767} 2. strict precondition 2: {Set."x"=FLPT and Set."y"=INT16 and int(x) in INT16} 3. strict precondition 3: {Set."x"=FLPT and Set."y"=INT16 and int(x) in Set."y"} 4. program code (convert floating point x to fixed point integer y): y := int(x) 5. postcondition: {Set."x"=FLPT and Set."y"=INT16 and y=int(x)} Summary: Take 16bit Ariane 4 code, add new 64bit Ariane 5 code, put unneeded 64 bit float into 16 bit int variable, catch exception, shut-down flight control program, watch BOOM! Note that: this error was in code that serves no purpose after lift off. The system was never correctly tested. The backup system was identical (same code) to the main system. See: http://sunnyday.mit.edu/accidents/Ariane5accidentreport.html
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.