slides created by Marty Stepp

Slides:



Advertisements
Similar presentations
Development Process. Four Factors People –10 to 1 variation in programmer productivity with the same experience Process –Methodology Product –Size Technology.
Advertisements

Software Project Management.  Leadership  Communications  Problem Solving  Negotiating  Influencing the Organization  Mentoring  Process.
CSE Senior Design I Classic Mistakes Instructor: Mike O’Dell This presentations was derived from the textbook used for this class, McConnell, Steve, Rapid.
CSE Senior Design I Classic Mistakes Instructor: Vassilis Athitsos This presentation was derived from the textbook used for this class, McConnell, Steve,
CSE 403 Lecture 8 Risk assessment. Lecture goals Understand risk management and assessment techniques Guarding against failure to meet delivery deadline,
Session 1: Introduction to Project Management
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Unit 4 University of Sunderland COMM80 Risk Assessment of Systems Change Risk Identification: Concept and Generic Techniques COMM80: Risk Assessment of.
TCSS 360, Spring 2005 Lecture Notes
Planning. SDLC Planning Analysis Design Implementation.
Dr. Nguyen Hai Quan.  Overview  Classic Mistakes  Project Manager Requirements  Project Management Phases.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Rapid Development (Part 1) Mihail V. Mihaylov RammSoft.
why information systems?
1 CSE 403 Classic Mistakes Reading: Rapid Development Ch3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from.
PowerPoint Presentation for Dennis, Wixom, & Tegarden Systems Analysis and Design with UML, 3rd Edition Copyright © 2009 John Wiley & Sons, Inc. All rights.
Project Management Chapter 3. Objectives Become familiar with estimation. Be able to create a project workplan. Understand why project teams use timeboxing.
CSE G674/2009 Project Project Management Section Presented by: Amir Aref Adib.
Welcome to Software Engineering. CSE403, Summer'05, Lecture 01 Lecture 01: Course Overview Valentin Razmov.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
NJIT 1 Managing Technical People Ian Sommerville, Software Engineering, Chapter 22 Gerald Weinberg, The Psychology of Computer Programming, and many other.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
1 CSE 403 Introduction Reading: Rapid Development Ch3.3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides.
CSE 403, Spring 2007, Alverson Software Projects – the challenges we face RD:McConnell.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Lecture 1 Introduction, Fundamentals, Classic Mistakes 1.
1 CSE 403 Introduction Reading: Rapid Development Ch3.3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides.
CSE 490RA Richard Anderson Chris Mason. Course goals For students  Programming experience on Tablet PC  UI and Design experience  Work in team  Develop.
18 Aug 2006CSE403, Summer'06, Lecture 25b Lecture 25: Lessons from the History of Software Development (Part III) Valentin Razmov.
CSE 403 Lecture 27 Course Wrap-up Discussion slides created by Marty Stepp
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
18 Aug 2005CSE403, Summer'05, Lecture 17 Lecture 17: Course Retrospective and the Path to Lifelong Learning (Part I) Valentin Razmov.
CSE 403 Lecture 25 Scheduling and Planning a Large Project Reading: The Mythical Man-Month, Ch. 2, by F. Brooks slides created by Marty Stepp
IT3101: Rapid Application Development Lec-1. What is Rapid Application Development? Software development process that allows usable systems to be built.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CSE 403, Spring 2008, Alverson CSE 403 Software Engineering Pragmatic Programmer Tip: Care about Your Craft Why spend your life developing software unless.
Introduction to Project management and Principles.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
1 Project Management Skills Leadership Communications Problem Solving Negotiating Influencing the Organization Mentoring Process and technical expertise.
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
PE-course Project Organised Learning (POL) Mm 4: Project Management
Information Systems Development
Project Management Chapter 3.
Game Design, Development, and Technology
Classroom Interaction via Tablet PCs and Student Submissions
Assistant Professor of Computer Science Washington State University
Software Project Management
Introduction to Requirements
Classic Mistakes chapter22
Informatics 43 – March 31, 2016.
Software Project Management
Teaching slides Chapter 1.
Design and Programming
Instructor: Mike O’Dell
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
How to fail at delivering software
why information systems?
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Bringing more value out of automation testing
Lecture 06:Software Maintenance
Extreme Programming.
Instructor: Mike O’Dell
Welcome to Software Engineering
Instructor: Manfred Huber
Chapter 1: Software and Software Engineering
Presentation transcript:

slides created by Marty Stepp CSE 403 Lecture 1 Introduction Reading: Rapid Development Ch. 3.3 slides created by Marty Stepp http://www.cs.washington.edu/403/

Software engineering software engineering: Creating and maintaining software applications by applying technologies and practices from computer science, project management, and other fields. Software engineering is about people working in teams under stress to create value for their customers. Software engineering has accepted as its charter, "How to program if you cannot." -- E. Dijkstra The first step toward the management of disease was replacement of demon theories and humours theories by the germ theory. That very step, the beginning of hope, in itself dashed all hopes of magical solutions. It told workers that progress would be made stepwise, at great effort, and that a persistent, unremitting care would have to be paid to a discipline of cleanliness. So it is with software engineering today. -- F. Brooks

Aspects of software engr. Processes necessary to turn a concept into a robust deliverable that can evolve over time Working with limited time and resources Satisfying a customer Managing risk Teamwork and communication

Ties to many fields computer science (algorithms, data structures, languages, tools) business/management (project mgmt, scheduling) economics/marketing (selling, niche markets, monopolies) communication (managing relations with stakeholders: customers, management, developers, testers, sales) law (patents, licenses, copyrights, reverse engineering) sociology (modern trends in societies, localization, ethics) political science (negotiations; topics at the intersection of law, economics, and global societal trends; public safety) psychology (personalities, styles, usability, what is fun) art (GUI design, what is appealing to users) necessarily "softer"; fewer clearly right/wrong answers

Roles of people in software customer / client: wants software built often doesn't know what he/she wants managers / designers: plan software difficult to foresee all problems and issues in advance developers: write code to implement software it is hard to write complex code for large systems testers: perform quality assurance (QA) it is impossible to test every combination of actions users: purchase and use software product users can be fickle and can misunderstand the product

Projects you make proposals (then vote on which projects to develop) start thinking about ideas today ideas from previous quarters are linked from the web sites project development in stages reflects modern methodologies for effective development you get feedback from us after each stage, but also regularly during the development at each stage project teams need to have at least 5-6 members otherwise it'd be toy development, and you'd miss on some of the most important experiences

What's in it for you what you'll learn tools you'll use get exposure to software development practices in use today learn how to collaborate with others toward a common goal see how software is produced, from idea to ship to maintenance get experience working in a large team toward a common goal be able to articulate and understand ideas in a conversation understand issues and tradeoffs in decisions as a manager tools you'll use design diagram (UML) software integrated development environments (IDEs) test suites (JUnit) and benchmarking / profiling software content management systems (CVS, Subversion) performance testing (profiling) software

Unique aspects of course cross-disciplinary nature of the subject larger-size teams opportunity to propose and work on your own ideas instructors and TAs in the "coach" role (some) mistakes along the way are encouraged, not penalized few clearly right/wrong answers plans always change content: software design, testing, project management, etc.

Advice from past students "Work together (in the same place) as much as possible." "Well-run and consistently scheduled meetings help a lot." "We often underestimated tasks. If we had spent more time analyzing each task and breaking it down into smaller chunks, our estimated times would have been more accurate." "Don't underestimate the difficulty of learning new programming languages, frameworks and tools." "Make small, frequent updates and commits to your source repository. Failing to do this results in merges that can be a nightmare."

What is a software project? "Good, fast, cheap ... Choose 2" FEATURES TIME RESOURCES SOFTWARE DELIVERABLE

Making software is hard Historically, ~ 85% of software projects "fail." Why? management sets unrealistic expectations; devs don't correct them overestimating the positive impact of shiny new tools and hardware hired developers based on availability despite warning signs personality conflicts between developers changes in rate structure requirements in middle of work one delay causes another (dev delay leads to test delay, etc.) hacks and shortcuts developers end up working "death marches" (6-day, 10-hour weeks) overestimating how nearly done you are ("I'm 90% there!") software written doesn't match the spec developer time taken away by other tasks tons of bugs come out in testing developers don't listen to testers; ignore severity of bugs reported management breaking promises (bonuses, time off, etc.)

Kinds of mistakes made People Process Product Technology Undermined motivation Weak personnel Uncontrolled problem employees Heroics Adding people to a late software project Noisy, crowded offices Friction between developers and customers Unrealistic expectations Lack of effective project sponsorship Lack of stakeholder buy-in Lack of user input Politics placed over substance Wishful thinking Overly optimistic schedules Insufficient risk management Contractor failure Insufficient planning Abandonment of planning under pressure Wasted time during the "fuzzy front end" Shortchanged upstream activities Inadequate design Shortchanged quality assurance Insufficient management controls Premature or overly frequent convergence Omitting necessary tasks from estimates Planning to catch up later Code-like-hell programming Requirements gold-plating Feature creep Developer gold-plating Push-me, pull-me negotiation Research-oriented development Silver-bullet syndrome Overestimated savings from new tools or methods Switching tools in the middle of a project Lack of automated source-code control

Is SWE different? Are the problems faced in software any different than those faced in other engineering fields? Arguments in favor: testing software quality is hard (example: Halting Problem) lower barrier to entry immaturity of the discipline customer expectations: quality, delivery timeline, etc. fast pace of technological change software is easier to copy Arguments against: software isn't always "soft" change is not easy, yet requirements do change change often forces a rewriting of major parts of the software developers still need to plan, execute, test, and sell the discipline is still in its infancy