Chapter 1 Software Software Engineering Slide Set to

  • Slides: 35
Download presentation
Chapter 1 Software & Software Engineering Slide Set to accompany Software Engineering: A Practitioner’s

Chapter 1 Software & Software Engineering Slide Set to accompany Software Engineering: A Practitioner’s Approach, 7/e by Roger S. Pressman Slides copyright © 1996, 2001, 2005, 2009 by Roger S. Pressman For non-profit educational use only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach, 7/e. Any other reproduction or use is prohibited without the express written permission of the author. All copyright information MUST appear if these slides are posted on a website for student use. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 1

What is Software? Software is: (1) instructions (computer programs) that when executed provide desired

What is Software? Software is: (1) instructions (computer programs) that when executed provide desired features, function, and performance; (2) data structures that enable the programs to adequately manipulate information and (3) documentation that describes the operation and use of the programs. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 2

What is Software? Software is developed or engineered, it is not manufactured in the

What is Software? Software is developed or engineered, it is not manufactured in the classical sense. Software doesn't "wear out. " Although the industry is moving toward component-based construction, most software continues to be custom-built. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 3

Wear vs. Deterioration THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH,

Wear vs. Deterioration THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 4

Software Applications system software application software engineering/scientific software embedded software product-line software Web. Apps

Software Applications system software application software engineering/scientific software embedded software product-line software Web. Apps (Web applications) AI software THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 5

Software—New Categories Open world computing—pervasive, distributed computing Ubiquitous computing—wireless networks Netsourcing—the Web as a

Software—New Categories Open world computing—pervasive, distributed computing Ubiquitous computing—wireless networks Netsourcing—the Web as a computing engine Open source—”free” source code open to the computing community (a blessing, but also a potential curse!) Also … (see Chapter 31) ◦ Data mining ◦ Grid computing ◦ Cognitive machines ◦ Software for nanotechnologies THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 6

Legacy Software Why must it change? ◦ software must be adapted to meet the

Legacy Software Why must it change? ◦ software must be adapted to meet the needs of new computing environments or technology. ◦ software must be enhanced to implement new business requirements. ◦ software must be extended to make it interoperable with other more modern systems or databases. ◦ software must be re-architected to make it viable within a network environment. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 7

Characteristics of Web. Apps - I Network intensiveness. A Web. App resides on a

Characteristics of Web. Apps - I Network intensiveness. A Web. App resides on a network and must serve the needs of a diverse community of clients. Concurrency. A large number of users may access the Web. App at one time. Unpredictable load. The number of users of the Web. App may vary by orders of magnitude from day to day. Performance. If a Web. App user must wait too long (for access, for server-side processing, for client-side formatting and display), he or she may decide to go elsewhere. Availability. Although expectation of 100 percent availability is unreasonable, users of popular Web. Apps often demand access on a “ 24/7/365” basis. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 8

Characteristics of Web. Apps - II Data driven. The primary function of many Web.

Characteristics of Web. Apps - II Data driven. The primary function of many Web. Apps is to use hypermedia to present text, graphics, audio, and video content to the enduser. Content sensitive. The quality and aesthetic nature of content remains an important determinant of the quality of a Web. App. Continuous evolution. Unlike conventional application software that evolves over a series of planned, chronologically-spaced releases, Web applications evolve continuously. Immediacy. Although immediacy—the compelling need to get software to market quickly—is a characteristic of many application domains, Web. Apps often exhibit a time to market that can be a matter of a few days or weeks. Security. Because Web. Apps are available via network access, it is difficult, if not impossible, to limit the population of end-users who may access the application. Aesthetics. An undeniable part of the appeal of a Web. App is its look and feel. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 9

Software Engineering Some realities: ◦ a concerted effort should be made to understand the

Software Engineering Some realities: ◦ a concerted effort should be made to understand the problem before a software solution is developed ◦ design becomes a pivotal activity ◦ software should exhibit high quality ◦ software should be maintainable The seminal definition: ◦ [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 10

Software Engineering The IEEE definition: ◦ Software Engineering: (1) The application of a systematic,

Software Engineering The IEEE definition: ◦ Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 11

A Layered Technology semi/automated support tools technical how-to methods basis for management control process

A Layered Technology semi/automated support tools technical how-to methods basis for management control process model a “quality” focus leads to more effective approaches Software Engineering THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 12

Software Process Definitions ØA process is a collection of activities, actions, and tasks that

Software Process Definitions ØA process is a collection of activities, actions, and tasks that are performed when some work product is to be created. ØAn activity strives to achieve a broad objective (e. g. communication with stakeholders) and is applied regardless of the application domain, size of the project, complexity of the effort, or degree of rigor with which software engineering is to be applied. ØAn action (e. g. , architectural design) encompasses a set of tasks that produce a major work product (e. g. , an architectural design model). Ø A task focuses on a small, but well-defined objective (e. g. , conducting a unit test) that produces a tangible outcome THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 13

A Process Framework Ø establishes the foundation for a complete software engineering process by

A Process Framework Ø establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. Ø encompasses a set of umbrella activities that are applicable across the entire software process. Process framework Framework activities work tasks 14 work products milestones & deliverables QA checkpoints Umbrella Activities THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN.

Framework Activities Ø A generic process framework for software engineering encompasses five activities: 1.

Framework Activities Ø A generic process framework for software engineering encompasses five activities: 1. Communication 2. Planning 3. Modeling ◦ Analysis of requirements ◦ Design 4. Construction ◦ Code generation ◦ Testing 5. Deployment THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 15

Umbrella Activities Ø Complement process framework. Ø applied throughout a software project and help

Umbrella Activities Ø Complement process framework. Ø applied throughout a software project and help a software team manage and control Ø progress, Ø quality, Ø change, and Ø risk. Ø Typical umbrella activities include v. Software project management v. Formal technical reviews v. Software quality assurance v. Software configuration management v. Work product preparation and production v. Reusability management v. Measurement v. Risk management THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 16

Adapting a Process Model ◦ the overall flow of activities, actions, and tasks and

Adapting a Process Model ◦ the overall flow of activities, actions, and tasks and the interdependencies among them ◦ the degree to which actions and tasks are defined within each framework activity ◦ the degree to which work products are identified and required ◦ the manner which quality assurance activities are applied ◦ the manner in which project tracking and control activities are applied ◦ the overall degree of detail and rigor with which the process is described ◦ the degree to which the customer and other stakeholders are involved with the project ◦ the level of autonomy given to the software team ◦ the degree to which team organization and roles are prescribed THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 17

The Essence of Practice Polya suggests: 1. 2. 3. 4. Understand the problem (communication

The Essence of Practice Polya suggests: 1. 2. 3. 4. Understand the problem (communication and analysis). Plan a solution (modeling and software design). Carry out the plan (code generation). Examine the result for accuracy (testing and quality assurance). THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 18

1: Understand the Problem Who has a stake in the solution to the problem?

1: Understand the Problem Who has a stake in the solution to the problem? That is, who are the stakeholders? What are the unknowns? What data, functions, and features are required to properly solve the problem? Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand? Can the problem be represented graphically? Can an analysis model be created? THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 19

2: Plan the Solution Have you seen similar problems before? Are there patterns that

2: Plan the Solution Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data, functions, and features that are required? Has a similar problem been solved? If so, are elements of the solution reusable? Can subproblems be defined? If so, are solutions readily apparent for the subproblems? Can you represent a solution in a manner that leads to effective implementation? Can a design model be created? THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 20

3: Carry Out the Plan Does the solution conform to the plan? Is source

3: Carry Out the Plan Does the solution conform to the plan? Is source code traceable to the design model? Is each component part of the solution provably correct? Has the design and code been reviewed, or better, have correctness proofs been applied to algorithm? THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 21

4: Examine the Result Is it possible to test each component part of the

4: Examine the Result Is it possible to test each component part of the solution? Has a reasonable testing strategy been implemented? Does the solution produce results that conform to the data, functions, and features that are required? Has the software been validated against all stakeholder requirements? THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 22

Hooker’s General Principles 1: The Reason It All Exists 2: KISS (Keep It Simple,

Hooker’s General Principles 1: The Reason It All Exists 2: KISS (Keep It Simple, Stupid!) 3: Maintain the Vision 4: What You Produce, Others Will Consume 5: Be Open to the Future 6: Plan Ahead for Reuse 7: Think! THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 23

1: The Reason It All Exists ØA software system exists for one reason: to

1: The Reason It All Exists ØA software system exists for one reason: to provide value to its users. ØAll decisions should be made with this in mind. ØBefore specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, Øask yourself questions such as: Ø "Does this add real VALUE to the system? " ØIf the answer is Ø "no", Ødon't do it. ØAll other principles support this one. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 24

2 : KISS (Keep It Simple, Stupid!) ØSoftware design is not a haphazard process.

2 : KISS (Keep It Simple, Stupid!) ØSoftware design is not a haphazard process. ØThere are many factors to consider in any design effort. ØAll design should be as simple as possible, but no simpler. ØThis facilitates having a more easily understood, and easily maintained system. ØThis is not to say that features, even internal features, should be discarded in the name of simplicity. Øthe more elegant designs are usually the more simple ones. ØSimple also does not mean "quick and dirty. " ØIn fact, it often takes a lot of thought and work over multiple iterations to simplify. ØThe payoff is software that is more maintainable and less error-prone. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 25

3: Maintain the Vision ØA clear vision is essential to the success of a

3: Maintain the Vision ØA clear vision is essential to the success of a software project. ØWithout one, a project almost unfailingly ends up being "of two [or more] minds" about itself. ØWithout conceptual integrity, a system threatens to become a patchwork of incompatible designs, held together by the wrong kind of screws. ØAs Brooks states: «Conceptual integrity is the most important consideration in system design. » ØStroustrup also notes: «Having a clean internal structure is essential to constructing a system that is understandable, can be extended and reorganized, and is maintainable and testable. » ØCompromising the architectural vision of a software system weakens and will eventually break even the most well designed systems. ØHaving an empowered Architect who can hold the vision and enforce compliance helps ensure a very successful software project. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 26

4: What You Produce, Others Will Consume ØSeldom is an industrial-strength software system constructed

4: What You Produce, Others Will Consume ØSeldom is an industrial-strength software system constructed and used in a vacuum. ØIn some way or other, someone else will use, maintain, document, or otherwise depend on being able to understand your system. ØSo, always specify, design, and implement knowing someone else will have to understand what you are doing. ØThe audience for any product of software development is potentially large. ØSpecify with an eye to the users. ØDesign, keeping the implementers in mind. ØCode with concern for those that must maintain and extend the system. ØSomeone may have to debug the code you write, and that makes them a user of your code. ØMaking their job easier adds value to the system. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 27

5: Be Open to the Future ØA system with a long lifetime has more

5: Be Open to the Future ØA system with a long lifetime has more value. ØToday, specifications change on a moment's notice and hardware platforms are obsolete when just a few months old Øsoftware lifetimes are typically measured in months instead of years. ØTrue "industrial-strength" software systems must endure far longer. Øthese systems must be ready to adapt to these and other changes. Ødesigned this way from the start. ØNever design yourself into a corner. Always ask "what if ", and prepare for all possible answers by creating systems that solve the general problem, not just the specific one. ØThis could very possibly lead to the reuse of an entire system. ØOne of the benefits of having both years of experience and many of them on a single project is that you learn the virtues of You. Arent. Gonna. Need. It. ØAs developers, we often guess wrong on how a system is going to change unless we are also domain experts. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 28

6: Plan Ahead for Reuse ØReuse saves time and effort. ØAchieving a high level

6: Plan Ahead for Reuse ØReuse saves time and effort. ØAchieving a high level of reuse is arguably the hardest goal to accomplish in developing a software system. ØThe reuse of code and designs has been proclaimed as a major benefit of using object-oriented technologies. Ørequires forethought and planning. ØThere are many techniques to realize reuse at every level of the system development process. ØThose at the detailed design and code level are well known and documented. ØNew literature is addressing the reuse of design in the form of software patterns. ØCommunicating opportunities for reuse to others in the organization is paramount. ØHow can you reuse something that you don't know exists? ØPlanning ahead for reuse reduces the cost and increases the value of both the reusable components and the systems into which they are incorporated. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 29

7: Think ØPlacing clear, complete thought before action almost always produces better results. ØWhen

7: Think ØPlacing clear, complete thought before action almost always produces better results. ØWhen you think about something, you are more likely to do it right. ØYou also gain knowledge about how to do it right again. ØIf you do think about something and still do it wrong, it becomes valuable experience. ØA side effect of thinking is learning to recognize when you don’t know something, at which point you can research the answer. ØWhen clear thought has gone into a system, value comes out. ØApplying the first six Principles requires intense thought, for which the potential rewards are enormous. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 30

Software Myths Affect managers, customers (and other nontechnical stakeholders) and practitioners Are believable because

Software Myths Affect managers, customers (and other nontechnical stakeholders) and practitioners Are believable because they often have elements of truth, but … Invariably lead to bad decisions, therefore … Insist on reality as you navigate your way through software engineering THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 31

Management myths ØWe already have a book that’s full of standards and procedures for

Management myths ØWe already have a book that’s full of standards and procedures for building software. Won’t that provide my people with everything they need to know? ØIf we get behind schedule, we can add more programmers and catch up (sometimes called the “Mongolian horde” concept). ØIf I decide to outsource the software project to a third party, I can just relax and let that firm build it. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 32

Customer myths ØA general statement of objectives is sufficient to begin writing programs—we can

Customer myths ØA general statement of objectives is sufficient to begin writing programs—we can fill in the details later. ØSoftware requirements continually change, but change can be easily accommodated because software is flexible. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 33

Practitioner’s myths ØOnce we write the program and get it to work, our job

Practitioner’s myths ØOnce we write the program and get it to work, our job is done. ØUntil I get the program “running” I have no way of assessing its quality ØThe only deliverable work product for a successful project is the working program. ØSoftware engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 34

How It all Starts Safe. Home: ◦ Every software project is precipitated by some

How It all Starts Safe. Home: ◦ Every software project is precipitated by some business need— ◦ the need to correct a defect in an existing application; ◦ the need to adapt a ‘legacy system’ to a changing business environment; ◦ the need to extend the functions and features of an existing application, or ◦ the need to create a new product, service, or system. THESE SLIDES ARE DESIGNED TO ACCOMPANY SOFTWARE ENGINEERING: A PRACTITIONER’S APPROACH, 7/E (MCGRAW-HILL 2009). SLIDES COPYRIGHT 2009 BY ROGER PRESSMAN. 35