1 CSE 403 Introduction Reading: Rapid Development Ch3.3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides.

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.
1 Software Project Management Session 1: Introduction, Fundamentals, Classic Mistakes.
Quality is about testing early and testing often Joe Apuzzo, Ngozi Nwana, Sweety Varghese Student/Faculty Research Day CSIS Pace University May 6th, 2005.
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 7 University of Sunderland CSEM04 ROSCO Risk & Opportunity Identification: Brainstorming (and Risk Checklists) CSEM04: Risk and Opportunities of Systems.
Unit 4 University of Sunderland COMM80 Risk Assessment of Systems Change Risk Identification: Concept and Generic Techniques COMM80: Risk Assessment of.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
TCSS 360, Spring 2005 Lecture Notes
CSE Senior Design I Risk Management Instructor: Mike O’Dell This presentations was derived from the textbook used for this class: McConnell, Steve, Rapid.
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.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
1 CSE 403 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) These lecture slides are copyright (C) Marty.
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.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
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.
Industry SDLCs and Business Climate. Justin Kalicharan Credentials Director and Senior Technology Officer Over 14 years of coding experience in various.
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.
10-January-2003cse Context © 2003 University of Washington1 What is a development project? CSE 403, Winter 2003 Software Engineering
CSE 403, Spring 2007, Alverson Software Projects – the challenges we face RD:McConnell.
1 CSE 403 Software Requirements Reading: Pragmatic Programmer Ch. 7: Before the Project These lecture slides are copyright (C) Marty Stepp, 2007, with.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Valentin Razmov, CSE403, Sp'05 CSE403 Section 1: The Fate of Software Projects Learning = Practice + Feedback Desirable Qualities in Teammates Team-Building.
Lecture 1 Introduction, Fundamentals, Classic Mistakes 1.
IT3101- Rapid Application Development. Course Details Lectures – 30 hours Practical - 60 hours.
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.
T Software Development Project I Customer Info Jari Vanhanen Ohjelmistoliiketoiminnan ja –tuotannon laboratorio Software Business and.
18 Aug 2006CSE403, Summer'06, Lecture 25b Lecture 25: Lessons from the History of Software Development (Part III) Valentin Razmov.
CS 5150 Software Engineering Lecture 2 Software Processes 1.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
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.
1 CSE 403 Team Dynamics Reading: Rapid Development Ch. 13, Pragmatic Programmer Ch These lecture slides are copyright (C) Marty Stepp, 2007, with.
Engineering Economics Lecture 18 Project Management 6 January 2010.
1 Software Project Management Introduction, Fundamentals, Classic Mistakes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Introduction to Project management and Principles.
1 Software Project Management Lecture # 3. 2 Today Administrative items Fundamentals Project Management Dimensions Classic Mistakes.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
1 Project Management Skills Leadership Communications Problem Solving Negotiating Influencing the Organization Mentoring Process and technical expertise.
Classroom Interaction via Tablet PCs and Student Submissions
Classic Mistakes chapter22
slides created by Marty Stepp
Instructor: Mike O’Dell
How to fail at delivering software
why information systems?
CSE 403 Scheduling These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides written by Valentin Razmov. They.
Integration Reading: McConnell, Code Complete, Ch. 29
Instructor: Mike O’Dell
Welcome to Software Engineering
Instructor: Manfred Huber
Presentation transcript:

1 CSE 403 Introduction Reading: Rapid Development Ch3.3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides written by Valentin Razmov. They may not be rehosted, sold, or modified without expressed permission from the author. All rights reserved.

2 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

3 Ties to many fields in contrast to other CS disciplines you have been exposed to, this one involves aspects of: 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) this subject will necessarily be "softer," and there will be fewer clearly right/wrong answers

4 Roles of people in software people involved in software production 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

5 Projects you make proposals (then vote on which projects to develop) start thinking about ideas today project ideas from previous quarters are linked from the respective course webs 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 6 members otherwise it'd be toy development, and you'd miss on some of the most important experiences

6 What's in it for you what you'll learn 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 shipping and subsequent maintenance get experience working in a large team toward a common goal be able to articulate and understand ideas in a conversation with expert practitioners in the field of software engineering understand the issues and tradeoffs involved in making decisions as software engineers and project managers 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

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

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

9 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.)

10 Kinds of mistakes made PeopleProcessProductTechnology 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

11 Is SWE different in this way? Arguments in favor: testing the quality of software is harder the Halting Problem; most properties are unverifiable 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