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

Slides:



Advertisements
Similar presentations
Basic SDLC Models.
Advertisements

A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
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.
Alternate Software Development Methodologies
Software Engineering References: "Software Engineering, 9 th ed." ( Addison-Wesley 2011 )
CS 5150 Software Engineering
IS 214 Needs Assessment and Evaluation of Information Systems Managing Usability © Copyright 2001 Kevin McBride.
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
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.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
Quality of Information systems. Quality Quality is the degree on which a product satifies the requirements Quality management requires that : that requirements.
Architecture Business Cycle
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Overview: Software and Software Engineering n Software is used by virtually everyone in society. n Software engineers have a moral obligation to build.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Model Process
It is the fuel of modern life Business are run Government rule Scientists Industries Education However, building and maintaining software is hard and getting.
1 Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 7th edition by Roger S. Pressman.
Advanced Software Engineering Dr. Cheng
Project Workflow.
Methodologies/Life Cycle Models
Announcements/Assignments
Software Development - Methodologies
Methodologies and Algorithms
Building Information Systems
Game Design, Development, and Technology
User-centred system design process
Software Development methodologies
PROJECT LIFE CYCLE AND EFFORT ESTIMATION
CS 5150 Software Engineering
Methodologies By Akinola Soyinka.
Rapid Prototyping.
Building Information Systems
HCI in the software process
Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Quality Engineering
Informatics 43 – March 31, 2016.
Component Based Software Engineering
Introduction to Information Systems
Software Development Initiation Planning Design Analysis Development
Software life cycle models
Overview: Software and Software Engineering
Process Models Coming up: Prescriptive Models.
Why Object-oriented Programming?
The Role of Prototyping
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Introduction If you have got a call for an Agile testing interview, then congratulations are in order. You may be feeling nervous, but it sure to be felt.
HCI in the software process
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Software Engineering: A Practitioner’s Approach, 6/e Chapter 3 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software metrics.
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Project Management How to access the power of projects!
HCI in the software process
Human Computer Interaction Lecture 14 HCI in Software Process
SOFTWARE DEVELOPMENT LIFE CYCLE
Requirements Analysis Techniques
Software Engineering: A Practitioner’s Approach, 6/e Chapter 3 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Chapter 2: Development process and organizations
Presentation transcript:

References: "Software Engineering, 9th 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) 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: Sometimes this is OK 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. Specification What are we trying to solve game genre major gameplay features How will we get there Major functions / classes (API) (A)pplication (P)rogramming (I)nterface Milestones Division of Labor

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

Approaches to S.E (Waterfall) Boss / producer comes up with high-level goals The managers develop a high-level implementation plan Art Lead Programming Lead Sound, Level, QA, etc Lead 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) Identify features / goals Start with most important Spend a short amount (a few weeks, often) implementing these features Present the prototype to the consumer / boss Based on feedback adjust goals / features adjust implementation plan (sometimes) re-write earlier code Go to step 2. 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 perfer