Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?

Similar presentations


Presentation on theme: "Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?"— Presentation transcript:

1 Software Engineering Jon Walker

2 What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development? What is Software Engineering?  A Process, a set of methods, and an array of tools - Pressman  Applying a disciplined practice to the construction of software? Modeling Problem-solving Knowledge acquisition - domain specific knowledge Rationale-driven NATO study group in 1967  Compared to traditional engineering disciplines  e.g. bridge building (structural engineering)

3 The Software Crisis How is building software different from building a bridge?  Complexity  Fault tolerance  Maintenance How is software different from other things people build?  Software is developed or engineered not manufactured  Software doesn't wear out  Most software is still custom built The "Software Crisis"  Software delivered late  Software delivered over budget  Software has critical defects X-Ray - control bug War games - simulation Patriot missile - timing problem  The bottom line - Machines are getting more complex, software is getting more complex

4 Software economics Programming/Software Engineering as Chemistry/Chemical engineering  Software engineering includes the economics of software What is an example of an economic trade off you might have to make for a software project? What information is important in making an economic decision about a software project?  Time  Effort  Cost of equipment  Cost of goods (third party) Can all of these be exactly measured?

5 Software Life-Cycle Software life-cycle  The series of steps that software goes through from concept to retirement  A "model" for these steps What do you mean "model"? Waterfall model  Used by most organizations through the 1980's  7 broad phases  What are they? Requirements phase Specification (analysis) phase Design phase Implementation phase Integration phase Maintenance phase Retirement phase  Why is it called waterfall? Outputs from one phase flow into the following phase

6 Software Maintenance Which phase takes the most effort?  Maintenance phase More people working on software maintenance than on new software - Pressman 2/3 of effort in Maintenance phase Types of maintenance  Corrective maintenance  Perfective maintenance  Adaptive maintenance What is an example of each of these types of maintenance?

7 Specification and Design Software is developed by humans for humans  What is the problem with this? We make mistakes  How do programming languages contribute to this problem? Imperfect translation of human desires into computer actions In which phase in the software lifecycle are mistakes the most costly?  Each phase is more costly than the next  Heuristic for cost - 10x Divide lifecycle into four phases: requirements, design, implementation, maintenance A problem in each phase is 10X as costly to fix as in a previous phase Where are most of the defects in software found?  60%-70% of defects found in specification and design phases

8 Team Programming Software developed is extremely complex  Moore's law – What is it? Performance-price factor of computing decreased by an order of magnitude every five years  Do you believe software is becoming more complex? Product complexity is such that it would take a single person years to complete Product releases are 6 months or shorter Teams are needed  What are the problems with teams? Organization Communication

9 Object Oriented Paradigm What is object oriented software engineering? How does object oriented design/programming help?  Implementation hiding (helps maintenance)  Design by contract (helps maintenance)  Closer to real problem (helps specification) Is the Object Oriented paradigm a silver bullet?

10 Agile Software Engineering What is Agile software engineering?  Things change so you might as well design your processes to embrace change  Individuals and interactions ● over processes and tools  Working software ● over comprehensive documentation  Customer collaboration ● over contract negotiation  Responding to change ● over following a plan How does Agile software engineering help?  Move specification closer to the customer Is Agile the silver bullet?

11 The Software Process The phases of the software process are?  Requirements  Specification  Design  Implementation  Integration  Maintenance  Retirement Why is the software process divided into phases?  They are the natural evolution of a software product

12 Requirements Requirements and specifications (next phase) tell what the product is to do Client/Developer  Client Person/group/organization who has contracted to have the software constructed Usually the end user, but not always  When is software built for someone who is not the end user?  Developer Person/group/organization that has contracted to develop the software

13 Requirements (cont) Three types of development  Internal software development  Contract software development  Shrink-wrap software development  What is different between each type of software? What is the principle role of the software developers during requirements?  Not what the client wants  Determining what the client needs Why does the client not know what they need?  Software is complex  The client does not understand what his/her own needs are  The client cannot communicate what his/her own needs are

14 Requirement Analysis Rapid Prototyping  Create a working model of the software Only the functionality that the user must interact with Error checking, design are not done  Good for refining Human Computer Interface (HCI) other human factors  Different types of prototyping Evolutionary Throw-away Partially reusable What are the advantages/disadvantages of each? JAD (Joint Application Development)  Similar to rapid prototyping using team composed of members from both client/developer organizations What are the problems with Rapid Prototyping?

15 Testing Requirements SQA (Software quality assurance) or QA (quality assurance) group  Involved during the requirements phase  Verify that what the customer needs is what is communicated by the requirements  Develop test plans that will verify those requirements Verification Testing - done by QA Acceptance Testing - done by client

16 Specification Explicitly describe the needs (specifications) of the client Usually described in a specification document Often accompanied by a user interface specification  Story boarding  Rapid prototyping Specification acts as a contract Specification problems  Ambiguous specifications  Incomplete specifications  Contradictory specifications  What is an example of each? Specification Testing  Done by SQA group  Traceability must be attained

17 Design Phase Design phase determines how the product will do what was specified in previous two phases Design often broken down into two phases  Architectural (high-level) design Break the project down into components  Detailed design Break the components down into modules Design Phase Testing  Traceability between design elements and specification  Design reviews are one way to accomplish this

18 Implementation What most people think of as software development Actual coding Testing  Code review  Unit tests  Other code checking

19 Integration Components/Modules are combined  There are various approaches to combining modules Incremental Top to bottom Bottom to top Big bang Which appeals most to you? Integration testing  "Smoke" testing Performed by development  Product testing Performed by QA  Acceptance testing Performed by the client

20 Maintenance Phase Maintenance often considered the most challenging aspect of software development More money/time spent on maintenance than on any other phase Maintenance needs to be considered in other phases  Give examples of how you can consider maintenance in other phases Good documentation Flexible design Maintenance Testing  Feature testing (bug fix testing)  Regression testing

21 Retirement When software is no longer usuable or maintainable it is retired  This is very rare  There is software that you use every day that is 30 years old ATMs Credit cards

22 Summary This is an overview of software engineering We will talk about many of these issues in more depth throughout the semester


Download ppt "Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?"

Similar presentations


Ads by Google