Software Engineering References: "Software Engineering, 9 th ed." ( Addison-Wesley 2011 )

Slides:



Advertisements
Similar presentations
How to be a good Programmer
Advertisements

Unit 6 Assignment 2 Chris Boardley.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
Software Project Management
CS487 Software Engineering Omar Aldawud
HCI in the software process Chapter 6
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
Taking a Waterfall Project Agile REF: Paul Geberth GCSS-J Project Manager Establishment of an Agile Project.
Unit 1, Lesson 4 Software Development Cycle AOIT Introduction to Programming Copyright © 2009–2012 National Academy Foundation. All rights reserved.
Alternate Software Development Methodologies
Documentation 1 Comprehending the present – Investing in the future.
AN OVERVIEW BY JAMIE STARKE The Role of Prototyping.
CS 5150 Software Engineering
IS 214 Needs Assessment and Evaluation of Information Systems Managing Usability © Copyright 2001 Kevin McBride.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software engineering, program management. The problem  Software is expensive to design! – Industry estimates put software development labor costs at.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
Problem with Software Requirements are complex The client does not know the functional requirements in advance Requirements may be changing Technology.
 Excel is the most widely used business and analytics graphics tool in the world.  The majority of Balanced Scorecards and operational dashboards in.
Chapter : Software Process
Quality of Information systems. Quality Quality is the degree on which a product satifies the requirements Quality management requires that : that requirements.
Language Evaluation Criteria
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
Architecture Business Cycle
Software Evaluation Catherine McKeveney Medical Informatics 1st March 2000.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Copyright © 2003 by Trend Micro Inc. 建立世界級的軟體研發中心 Trend Micro Inc. Jeremy Liang NTU Seminar.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
CS 5150 Software Engineering Lecture 3 Software Processes 2.
Prof. Aiken CS 169 Lecture 21 Software Process CS169 Lecture 2.
Chapter 10 Response Time and Display Rate February 3, 2004.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Towards Rationales of Software Confederations Jaroslav Král, Michal Žemlička Department of Software engineering Faculty of Mathematics and Physics Charles.
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
 Many models have been proposed to deal with the problems of defining activities and associating them with each other  The first model proposed was the.
Software Model Process
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
It is the fuel of modern life Business are run Government rule Scientists Industries Education However, building and maintaining software is hard and getting.
Software Design and Development Development Methodoligies Computing Science.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Announcements/Assignments
Software Development - Methodologies
Software Development methodologies
References: "Software Engineering, 9th ed." (Addison-Wesley 2011)
Software Development Life Cycle
Software Quality Engineering
Teaching slides Chapter 1.
Introduction to Information Systems
Software life cycle models
Why Object-oriented Programming?
Software metrics.
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Presentation transcript:

Software Engineering References: "Software Engineering, 9 th ed." ( Addison-Wesley 2011 )

What is it? "The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software" SWEBOK ( Software Engineering Body of Knowledge ) Software Engineering Body of Knowledge Not necessarily the same as writing a program.

An analogy Architects (Software Engineers) – Design the building – Plan the layout, look, #rooms, type of structure, etc. – Conform to building codes – The "planner", not the "builder" Construction Worker (Coders) – Follows the blueprint designed by the architect. – The "builder", not the "planner" Do you need an architect? – Small (toolshed) vs. Large buildings (hospital)

Applications of S.E. Stand-alone applications Client-server applications Embedded Control Systems Batch Processing Systems Simulations Data Collection Systems Systems of Systems …

Costs of S.E. You must invest time Delays start of development Often more paperwork / beauracracy Requires lots of communication – With team members – With clients / bosses / etc.

Benefits of S.E. Avoids wasted efforts Helps produce cleaner code – More readable – More extensible – More error-proof – More elegant Improves customer satisfaction (for you) a very marketable career – Money Magazine (2006) #1 job prospect in U.S.A.

Cowboy Coders When given a job: – No planning whatsoever – Start working immediately. – Get it to work as quick as possible. – Turn in the lab and forget it Sometimes this is OK – For small projects you won't use again. – When working by yourself – Quick tests, proof of concept (example code in class) – Non-critical systems (some critical systems are: warhead targeting, medical records, etc)

Hallmarks of Cowboy Coders Spaghetti code No planning on how everything will fit together Little / no commenting Poor naming conventions Ignore bugs – "It's working most of the time" Not easily read by others Not easy to expand upon Poor (or no) use of modularity features – modules – functions – classes Little (or no) intermediate (or unit) testing No planning for future use of the software

Software_Engineering == not Cowboy_Coding

Typical Steps in S.E. 1.Specification a.What are we trying to solve i.game genre ii.major gameplay features b.How will we get there i.Major functions / classes (API) (A)pplication (P)rogramming (I)nterface ii.Milestones iii.Division of Labor

Typical Steps in S.E., cont. 2.Software Design a.Assign Tasks b.Implement major features first 3.Testing a.Very often while developing b.Later, Alpha, Beta 4.Evaluation a.Post-mortem b.Sequel planning There is almost always some back-and-forth between steps

Approaches to S.E (Waterfall) 1.Boss / producer comes up with high-level goals 2.The managers develop a high-level implementation plan a.Art Lead b.Programming Lead c.Sound, Level, QA, etc Lead 3.The Leads assign jobs to the "grunts" A "traditional" corporate structure Very linear.

Waterfall analysis - A lot of bureaucracy - Typically slower to start - Hard to change goals / respond to changing customer needs. - Hard to plan for large / new / complex systems + Easier to ensure quality, reliability, lack of errors + Less chance of feature creep

Approaches to S.E. (Re-use oriented) Type#1: – Use an "off-the-shelf" middleware product Unreal, Havok, Bink, Unity, etc. – Typically there is "glue" code needed. Type#2: – Develop your software as an "Engine" – Try to make it as general as possible.

Re-Use oriented analysis Type #1: - Limited by engine's features - Usually very expensive Type #2: - Generality (usually) == more time / effort - Re-inventing the wheel + Design only those features (that might be or are currently) needed - Planning a large project is hard.

Approaches to S.E. (Agile Programming) 1.Identify features / goals a.Start with most important 2.Spend a short amount (a few weeks, often) implementing these features 3.Present the prototype to the consumer / boss a.Based on feedback i.adjust goals / features ii.adjust implementation plan iii.(sometimes) re-write earlier code b.Go to step 2. c.Repeat until consumer is happy / all goals met.

Agile Proramming Analysis - More chance of re-doing components - Harder to predict milestones - Susceptible to feature creep + Less paperwork / (initial) planning + More flexible from consumers point of view + (Sometimes) quicker turn-around time Anecdotally, this seems to be what many (indie) game companies prefer