500 likes | 744 Views
Scope Of Software Engineering. Prologue…. ‘Have you any idea what happened to our computers!. Pay $0.00 bill, …, Pay the $0.00 bill within 30 days…, …, Pay the $0.00 bill or possible legal action …, Paying the $0.00 bill ,. ,. Prologue - (Cont’d)….
E N D
Prologue… • ‘Have you any idea what happened to our computers! • Pay $0.00 bill, • …, • Pay the $0.00 bill within 30 days…, • …, • Pay the $0.00 bill or possible legal action …, • Paying the $0.00 bill ,
, Prologue - (Cont’d)… • On Nov, 11, 1979 the US Worldwide Military Command and Control System (WWMCCS) computer network reported that the Soviet Union has launched missiles aimed towards the US…, • Actually, a simulated attack was interpreted as the real thing!
Prologue - (Cont’d)… • 30% of software development projects fail, • 70% of the remainder • Are over budget by 189% • Behind schedule by 222%, • More than 50% of this trouble is caused by inadequate requirements definition , 352 companies, 8000 Projects. Source: The Standish Group, 1995
Prologue - (Cont’d)… • Why SW Projects Fail?
Prologue - (Cont’d) … • SW engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the users’ needs , • Furthermore, the SW must be easy to modify when the users’ needs change.
discipline • Discipline – training; punishment; method, system, • Self discipline - ability to apply oneself to complete a taskor Self discipline isthe ability to do what needs to be done,at the time it needs to be done,whether you like doing it or not.
Overview • Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm , • Terminology.
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
Historical Aspects … • 1968 NATO Conference, Garmisch, Germany, • Aim: to solve the “Software Crisis” , • Software is delivered: • Late, • Over budget, • With residual (שרידי, משקעי ) faults.
Historical Aspects (Cont’d) … • Few actual questions: • What really happened on 1/1/2000 0:0?, • Why was windows 2000 so late?(And why, on its release day, some 64,000 bugs were announced?) , • How did NASA lose MARS?
Historical Aspects (Cont'd) … • Why cannot bridge-building techniques be used to build operating systems?, • Compare: • Attitude to collapse, • Accumulated experience, • Complexity , • Maintenance (can you please rotate in 90°?).
Historical Aspects - Conclusions • Software engineering is not “engineering”, • No silver bullet [brooks 1987], • What silver bullets are used for?
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
Economic Aspects • Coding method CMnew is 10% faster than currently used method CMold. Should it be used?, • Common sense answer: “of course!”, • Software engineering answer: • Cost of introducing CMnew to the organization, • Cost of shifting to CMnew : training, (and not working, learning curve), • Consider the effect of CMnew on maintenance , • Consider the client response.
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
Maintenance Aspects • Software life cycle, • The way we produce software, including: • The life-cycle model, • The individuals , • CASE tools.
System Analysis, Life-cycle Model 1. Requirements phase – דרישות , 2. Specification ( & Planning) phase – אפיון , 3. Design phase – תיכון , 4. Implementation phase – יישום, מימוש , 5. Integration phase – שילוב , 6. Maintenance phase – תחזוקה , 7. Retirement – פרישה .
Relative Cost of Each Phase • 1976–1981 data, • Maintenance constitutes 67% of total cost:
דרישות 2% אפיון 5% תכן 6% קידוד ובדיקות %12 שילוב %8 אחזקה %67 Relative Cost of Each Phase דרישות אפיון %2 %5 תכן %6
Good and Bad Software • Good software is maintained — bad software is discarded , • Effect of CMnew on maintenance.
Different Types of Maintenance • Corrective maintenance [about 20%], • Enhancement:— תחזוקת הגברה, שיפור, חיזוק • Perfective maintenance [about 60%] — תחזוקת השלמה,e.g.: additional functionality or decreased response time , • Adaptive maintenance [about 20%] — התאמהתחזוקת. (Responding to an ever-changing environment).
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
Specification VS. Maintenance Faults • 60 to 70 percent of faults are specification and design faults, • Data of Kelly, Sherif, and hops [1992]: • 1.9 faults per page of specification, • 0.9 faults per page of design, • 0.3 faults per page of code ,
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
Team Programming Aspects • SW products might be huge: • We can build products that are too large to be written by one person in the available time, • Teams: • Interface problems, • Meetings , • Communication is cheap: • International teams, • Different working hours, • Cultural differences.
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
The Object-oriented Paradigm … • The structured paradigm had great successes initially • It started to fail with larger products (> 50,000 LOC), • Maintenance problems (today, up to 80% of effort) , • Reason: structured methods are • Action oriented (finite state machines, data flow diagrams); or • Data oriented (entity-relationship diagrams) , • But not both.
The Object-oriented Paradigm (Cont'd) • Both data and actions are of equal importance, • Object: • Software component that incorporates both data and the actions that are performed on that data , • Example: • Bank accountdata: account balanceactions: deposit, withdraw, determine balance.
Structured VS. Object-oriented Paradigm • Information hiding, • Responsibility-driven design , • Impact on maintenance, development.
Key Aspects of Object-oriented Solution • Conceptual independence: • Encapsulation – כימוס, • Physical independence: • Information hiding, • Impact on development: • Physical counterpart (מקביל, דומה) , • Impact on maintenance: • Independence effects.
Responsibility-driven Design • Also called “Design by Contract”, • Example: • Send flowers to your aunt Tel Aviv: • Call 1-800-203040, • Where is 1-800-203040?, • Which Tel-Aviv City florist does the delivery?, • Information hiding , • Object-oriented paradigm: • “Send a message by a method [action] of an object“.
Transition From Analysis to Design • Structured paradigm: • Jolt ( טלטול)between analysis (what) and design (how) , • Object-oriented paradigm: • Objects appear from the very beginning.
Analysis / Design “Hump” • Systems analysis: • Determine what has to be done, • Design: • Determine how to do it, • Architectural design — determine modules , • Detailed design — design each module.
Removing the “Hump” • Object-oriented analysis: • Determine what has to be done, • Determine the objects, • Object-oriented design: • Determine how to do it , • Design the objects.
In More Detail • Objects enter here:
Warning • Do not use the object-paradigm to enhance a product developed using the structured paradigm.Water and oil do not mix , • Exception: if the new part is totally disjoint • Example: adding a GUI (graphical user interface).
Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.
Terminology … • Software, program, system, product, • Methodology – the science of methods,paradigm – model or pattern,we will use both for: ‘collection of techniques for carrying out the product life-cycle’, • Client, developer, user , Cont’d
Terminology (Cont’d) … • Bug: • “A bug crept into the code” Instead of • “I made a mistake” , • Whose responsibility is it?
Object-oriented Terminology … • Data component of an object: • State variable, • Instance variable (java), • Field (C++), • Attribute (generic) , • Action component of an object: • Member function (C++) , • Method (generic).
Object-oriented Terminology (Cont’d) • C++: A member is either: • An attribute (“field”), or , • A method (“member function”) , • Java: A field is either: • An attribute (“instance variable”), or a • Method.
Summary • Historical aspects, • Economic aspects, • Maintenance aspects, • Specification and design aspects, • Team programming aspects, • The object-oriented paradigm, • Terminology.