Download presentation
Presentation is loading. Please wait.
Published byAudrey Franklin Modified over 9 years ago
1
1 Software Engineering CS 421 / SWE 421 Kinga Dobolyi
2
Why are you taking this course? Alternatively, why are we teaching this course? Do you need a course in software engineering? How is writing the code for a 211 project different from software engineering (or is it)? What do you think we will be focusing on in this class?
3
What is Software Engineering? According to Wikipedia: “Software engineering (SE) is a profession dedicated According to Wikipedia: “Software engineering (SE) is a profession dedicated to designing, implementing, and modifying software so that it is of higher quality, more affordable, maintainable, and faster to build” 3
4
4 Why worry about SW Engineering? Quality issues: History of SW failures from http://www.wired.com/software/coolapps/news/2005/11/69355 Quality issues: History of SW failures from http://www.wired.com/software/coolapps/news/2005/11/69355 http://www.wired.com/software/coolapps/news/2005/11/69355 Many more incidents… Many more incidents…
5
Software is expensive to maintain Maintenance activities consume 70-90% of the total lifecycle cost of software, summing to over $70 billion per year Maintenance activities consume 70-90% of the total lifecycle cost of software, summing to over $70 billion per year We want to “get it right” the first time We want to “get it right” the first time But as we’ll see this is non-trivial But as we’ll see this is non-trivial 5
6
6 Why is it so hard? Lots of “parts”. Many more than Lots of “parts”. Many more than mechanical devices Dishwasher - 128 parts Dishwasher - 128 parts Car - 14,000 parts Car - 14,000 parts Space shuttle - 2.5 million parts Space shuttle - 2.5 million parts Red Hat Linux 7.1 - 30 million source lines of code (SLOC) Red Hat Linux 7.1 - 30 million source lines of code (SLOC) Mac Office - 30 million SLOC Mac Office - 30 million SLOC Using 70 programmers = 428,000 SLOC / programmer Using 70 programmers = 428,000 SLOC / programmer But those are big… what about “normal size programs”? But those are big… what about “normal size programs”? Average programmer SLOC (Source lines of code) / day = 100 Average programmer SLOC (Source lines of code) / day = 100 5 days/week * 52 weeks/year = 26,000 SLOC / year 5 days/week * 52 weeks/year = 26,000 SLOC / year 15 programmer team = 390,000 SLOC / year 15 programmer team = 390,000 SLOC / year
7
7 Why is it so hard? (continued) We’re a young field We’re a young field ENIAC/ MARK-I in 1946 ENIAC/ MARK-I in 1946 FORTRAN - 1957 FORTRAN - 1957 But giant - As of 2004, the U. S. Bureau of Labor Statistics counts 760,840 software engineers holding jobs in the U.S.; for comparison, in the U.S. there are some 1.4 million practitioners employed in all other engineering disciplines combined. - http://en.wikipedia.org/wiki/Software_engineering But giant - As of 2004, the U. S. Bureau of Labor Statistics counts 760,840 software engineers holding jobs in the U.S.; for comparison, in the U.S. there are some 1.4 million practitioners employed in all other engineering disciplines combined. - http://en.wikipedia.org/wiki/Software_engineering Unanticipated growth Unanticipated growth Still more art than science Still more art than science Everything we do is “new”. (We don’t build the exact same house 30 times.) Everything we do is “new”. (We don’t build the exact same house 30 times.) Need to have more reproducible results Need to have more reproducible results Need to have more measurements Need to have more measurements
8
8 Why do projects fail? Why do projects fail so often? Unrealistic or unarticulated project goals Unrealistic or unarticulated project goals Inaccurate estimates of needed resources Inaccurate estimates of needed resources Badly defined system requirements Badly defined system requirements Poor reporting of the project's status Poor reporting of the project's status Unmanaged risks Unmanaged risks Poor communication among customers, developers, and users Poor communication among customers, developers, and users Use of immature technology Use of immature technology Inability to handle the project's complexity Inability to handle the project's complexity Sloppy development practices Sloppy development practices Poor project management Poor project management Stakeholder politics Stakeholder politics Commercial pressures Commercial pressures List from: http://www.spectrum.ieee.org/sep05/1685 How many of these are caused by technical incompetence in your developers? A.0 B.5 C.8 D.All of them How many of these are caused by technical incompetence in your developers? A.0 B.5 C.8 D.All of them Question:
9
9 How do we fix it? Need to have more reproducible results Need to have more reproducible results Standard processes / procedures to produce good Standard processes / procedures to produce goodoutcomes Design patterns Design patterns Object oriented programming (reuse) Object oriented programming (reuse) More measurements of both the software and the process More measurements of both the software and the process More testing at all stages of development More testing at all stages of development By creating a better understanding of the process we use to create software, we’ll create better software faster. By creating a better understanding of the process we use to create software, we’ll create better software faster. “Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.” - IEEE Standard Glossary of Software Engineering Terminology
10
10 Software Engineering: A Practitioner’s Approach, 7/e Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 7/e Chapter 1 Software and Software Engineering copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited.
11
11 What is Software? Software is Instructions – computer programs Data Structures - that enable the programs to adequately manipulate information Documentation – the describes the use and operation of the programs
12
12 Why is software different than hardware? Or manufacturing? software is engineered software doesn’t wear out most software is still custom built software is complex
13
13 Wear vs. Deterioration
14
14 There are many types of applications system software - OS, file management, networking, drivers, etc… system software - OS, file management, networking, drivers, etc… application software - data processing, point of sale, other business functions… application software - data processing, point of sale, other business functions… engineering/scientific software - CAD, stress analysis, orbital mechanics engineering/scientific software - CAD, stress analysis, orbital mechanics embedded software - microwave oven keypad, automobile control, cell phone software, etc… embedded software - microwave oven keypad, automobile control, cell phone software, etc… product-line software - word processing, inventory control, etc… product-line software - word processing, inventory control, etc… WebApps (Web applications) - many different things today WebApps (Web applications) - many different things today AI software - robotics, data mining, expert systems AI software - robotics, data mining, expert systems
15
15 Legacy Software software must be adapted to meet the needs of new computing environments or technology. 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 enhanced to implement new business requirements. software must be extended to make it interoperable with other more modern systems or databases. 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 software must be re-architected to make it viable within a network environment. Why must it change?
16
16 Software – A.True or B.False? 1. If we get behind schedule we can add more programmers to catch up 2. A general statement of objectives is sufficient to begin writing programs - we can fill in the details later 3. Project requirements change, but change can be easily accommodated because software is flexible 4. Once we write the program and get it working our job is done 5. Software engineering will make us create unnecessary documentation and will invariably slow us down
17
17 Software Myths Affect managers, customers (and other non-technical stakeholders) and practitioners Affect managers, customers (and other non-technical stakeholders) and practitioners Are believable because they often have elements of truth, Are believable because they often have elements of truth, but … Invariably lead to bad decisions, Invariably lead to bad decisions, therefore … Insist on reality as you navigate your way Insist on reality as you navigate your way through software engineering One of the goals in this class is to learn you how to determine what reality is!
18
Fixing the problem Software engineering! Software engineering is really Software engineering is really just a set of ideas and tools to use (when it makes sense) to give you a higher likelihood of success on a software project. Will your project fail if you don’t use any software engineering techniques? No…. but you have a better chance at success if you do. Will your project fail if you don’t use any software engineering techniques? No…. but you have a better chance at success if you do. 18
19
19 A Generic Framework Communication Communication Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities Planning Planning Establish a plan for the work. Technical task to be conducted, risks, needed resources, work products to be created, and a schedule Establish a plan for the work. Technical task to be conducted, risks, needed resources, work products to be created, and a schedule Modeling Modeling Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements Construction Construction Combines code generation and testing required to uncover errors in the code Combines code generation and testing required to uncover errors in the code Deployment Deployment The software (as a complete entity or partially complete increment) is delivered to the customer who evaluates it and provides feedback. The software (as a complete entity or partially complete increment) is delivered to the customer who evaluates it and provides feedback.
20
20 Framework Activities Communication Communication Planning Planning Modeling Modeling Analysis of requirements Analysis of requirements Design Design Construction Construction Code generation Code generation Testing Testing Deployment Deployment What are some artifacts (work tasks, work products, milestones & deliverables, QA checkpoints) of each activity? What tools may help support them?
21
21 Umbrella Activities Software project management Formal technical reviews Software quality assurance Software configuration management Work product preparation and production Reusability management Measurement Risk management
22
22 A Layered Technology Software Engineering a “quality” focus process model methods tools Tools: anything that helps support the method Methods: what you do during each activity Model: a way to organize basic activities
23
23 The Process Model: Adaptability The framework activities will always be applied on every project... BUT The framework activities will always be applied on every project... BUT The tasks (and degree of rigor) for each activity will vary based on: The tasks (and degree of rigor) for each activity will vary based on: the type of project the type of project characteristics of the project characteristics of the project common sense judgment; common sense judgment; concurrence of the project team
24
Question Pick any one of the project types below and tell me which process activity would be emphasized or deemphasized and why Pick any one of the project types below and tell me which process activity would be emphasized or deemphasized and why 24 Project Types: - 1.Space Shuttle control system - 2.Web-based calendar - 3.Embedded controller in your refrigerator - 4.Automatic “daily fortune” text-messenger Framework Activities Communication Communication Planning Planning Modeling Modeling Analysis of requirements Analysis of requirements Design Design Construction Construction Code generation Code generation Testing Testing Deployment Deployment
25
How to solve any problem Polya 1945 Polya 1945 Understand the problem Understand the problem Plan a solution Plan a solution Carry out the plan Carry out the plan Examine the result for accuracy Examine the result for accuracy Do these agree with our basic framework? communication, planning, modeling, construction deployment? Do these agree with our basic framework? communication, planning, modeling, construction deployment? 25
26
How do we improve our performance? We want to “provide guidance for developing or improving processes that meet the business goals of an organization” We want to “provide guidance for developing or improving processes that meet the business goals of an organization” Capability Maturity Model Integration (CMMI) is a process improvement approach that helps organizations improve their performance Capability Maturity Model Integration (CMMI) is a process improvement approach that helps organizations improve their performance process improvement process improvement 26
27
27 The CMMI CMMI defines characteristics shown to achieve good results. CMMI defines characteristics shown to achieve good results. The CMMI defines each process area in terms of “specific goals” and the “specific practices” required to achieve these goals. The CMMI defines each process area in terms of “specific goals” and the “specific practices” required to achieve these goals. Specific goals establish the characteristics that must exist if the activities implied by a process area are to be effective. Specific goals establish the characteristics that must exist if the activities implied by a process area are to be effective. Specific practices refine a goal into a set of process- related activities. Specific practices refine a goal into a set of process- related activities. PP - project planning REQM - Requirements Mgmt MA - Measurement and Analysis CM - Configuration Mgmt PPQA - Process and Product QA
28
28 The CMMI
29
29 Process Assessment Does your process adhere to the qualities described in XYZ. Does your process adhere to the qualities described in XYZ. The process should be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for successful software engineering The process should be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for successful software engineering. Many different assessment options are available: Many different assessment options are available: SCAMPI --- assessed for CMMI standards compliance SCAMPI --- assessed for CMMI standards compliance SPICE --- assessed for ISO/IEC15504 compliance SPICE --- assessed for ISO/IEC15504 compliance ISO 9001:2000 --- assessed for ISO 9001 compliance ISO 9001:2000 --- assessed for ISO 9001 compliance Process Assessment is often used to “certify” a company as compliant (“Company X is ISO9001 certified “or “Company Y is CMM level 4”) Process Assessment is often used to “certify” a company as compliant (“Company X is ISO9001 certified “or “Company Y is CMM level 4”)
30
30 Assessment and Improvement Best use of assessment though is to improve your process! (Not just “get the certification”)
31
The Waterfall Model Do all process steps in the following order (this is generally thought of as the most basic model) Do all process steps in the following order (this is generally thought of as the most basic model) 31 1998, the Standish Group analyzed 23,000 projects to determine failure factors. The top reasons for project failure, according to the report, were associated with waterfall practices. - http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf
32
Different families of models 32 Prescriptive Agile Prescriptive Models 1970->Present -Waterfall (1970) -Evolutionary (1975) -Incremental (1975) -Spiral (1988) -RAD (1991) Agile Models 2001->Present - eXtreme Programming (1999) - SCRUM (1990s) - DSDM (1997) - Crystal (2001) All dates are approximate based on publications
33
Different families of models 33 Prescriptive Agile Goal: Higher Quality Software Philosophy: Bring order to chaos Provide repeatability/consistency Provide ability to control Provide ability to coordinate teams Goal: Higher Quality Software Philosophy: Individuals and interaction over process and tools Working software over large documentation Customer collaboration over contract negotiation Responding to change over following a plan Which is probably better for large teams? A. Prescriptive B. Agile C. Same Which is probably better for a web application? Which is probably better for Mars rover control system? Which is produces better software?
34
Project Team decisions due tomorrow/today (depending on section) Team decisions due tomorrow/today (depending on section) Post to blackboard a document containing your team name, and the names and emails of the members of your team Post to blackboard a document containing your team name, and the names and emails of the members of your team 4-5 students per team 4-5 students per team Turn in your team interview sheets (handed out Sept 1/2) in class, if you are not part of a team. If I didn’t get an email from your team, I will use these sheets for the rest of you to assign teams for you. Turn in your team interview sheets (handed out Sept 1/2) in class, if you are not part of a team. If I didn’t get an email from your team, I will use these sheets for the rest of you to assign teams for you. I will then set up accounts for teams on XP-dev; you will be emailed information I will then set up accounts for teams on XP-dev; you will be emailed information 34
35
Homework Pressman ch 1 exercises: 5, 8, 10 Pressman ch 1 exercises: 5, 8, 10 Due next Thursday by 10pm Due next Thursday by 10pm Submit on blackboard Submit on blackboard 35
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.