Software Engineering and Best Practices

Slides:



Advertisements
Similar presentations
Prescriptive Process models
Advertisements

1 Requirements and the Software Lifecycle The traditional software process models Waterfall model Spiral model The iterative approach Chapter 3.
CSC340: Tutorial 1 Software Lifecycles TA: Yuan An Date: 9:00-10:00am, Fri. Oct. 3, 2003 Location: BA1130.
Object-Oriented Software Development CS 3331 Fall 2009.
Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
CS3773 Software Engineering Lecture 01 Introduction.
Sharif University of Technology Session # 3.  Contents  Systems Analysis and Design Sharif University of Technology MIS (Management Information System),
30 Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with.
Software Engineering General Project Management Software Requirements
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
An Introduction to Software Engineering
Unified Software Practices v D Copyright  1998 Rational Software, all rights reserved 1 Best Practices of Software Engineering.
Chapter 1 The Systems Development Environment
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 System and Software Engineering.
Software Development Life Cycle (SDLC)
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
PGD-1303 Software Project Management?. What is software? Software  Computer programs and associated documentation Documentation includes  requirements.
Software Engineering Methodologies (Introduction)
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Objectives of the Lecture
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Introduction to Software Engineering
CEN st Lecture CEN 4021 Software Engineering II Instructor: Masoud Sadjadi What.
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
2-Oct-15 Introduction to SWE1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts.
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
Note Excerpts from Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R. Schach
Software Engineering 1 Some Definitions Lesson 2.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
Software Engineering, COMP201 Slide 1 Introduction to software engineering Lecture 1.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Rational Unified Process Fundamentals Best Practices of Software Engineering Rational Unified Process Fundamentals Best Practices of Software Engineering.
C_ITIP211 LECTURER: E.DONDO. Unit 1 : The Systems Development Environment.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Software Engineering cosc 4359 Spring 2017.
Methodologies and Algorithms
Prototyping in the software process
An Introduction to Software Engineering
MISY 301 Mr.Mohammed Rafeeque.
Lecture 3 Prescriptive Process Models
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
The Web Application Development Process Models
Software Development methodologies
The Systems Engineering Context
Software Process Models
HCI in the software process
IT Systems Analysis & Design
Software Processes.
Requirements and the Software Lifecycle
Introduction to Software Engineering
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
SDLC Model A framework that describes the activities performed at each stage of a software development project.
What is a software process?
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Software Process Models
HCI in the software process
Software Engineering and Best Practices
CS385T Software Engineering Dr.Doaa Sami
SOFTWARE LIFE-CYCLES Beyond the Waterfall.
Human Computer Interaction Lecture 14 HCI in Software Process
Logical Architecture & UML Package Diagrams
Presentation transcript:

Software Engineering and Best Practices Sources: Various. Rational Software Corporation slides, OOSE textbook slides, Per Kroll talk, How to Fail with the RUP article, textbooks Most slides have been modified considerably

What is software engineering ?? Software Engineering is an engineering discipline which is concerned with all aspect of software production from the early stages of system specification through to maintaining the system after it has gone into use.

What is software engineering ?? Software Engineers must adopt a systematic and organized approach to their work and use appropriate tools and techniques depending on the problem to be solved , development constraints, and the resource availability”

What is a software process ?? IEEE - A process is a sequence of steps performed for a given purpose A set of activities whose goal is the development or evolution of software General activities in all software processes : Specification: what the system should do and it’s development constrains Development: production of the software Validation: checking that the software is what the customer wants Evolution : changing the software in response to changing demands

Comments: $250 billion annually in US. Over 175,000 projects! Complexity, size, distribution, importance push our limits. Business pushes these limits: Great demands for rapid development and deployment  Incredible pressure: develop systems that are: On time, Within budget, Meets the users’ requirements Figures in the late 90s indicated that at most 70% of projects completed Over 50% ran over twice the intended budget $81 billion dollars spent in cancelled projects!! Getting better, but we need better tools and techniques!

What Happens in Practice Sequential activities: (Traditional ‘Waterfall’ Process) Requirements Design Code Integration Test Late Design Breakage Integration Begins 100% Risk inadequately addressed Process not receptive to Change Problems not really ‘seen’ until near delivery date! Until then, ‘all is well…’ Big Bang approach – full delivery Long development cycles… Little user involvement, etc. etc… Development Progress (% coded) Original Target Date Project Schedule

The Result is Often Referred to as the Software Crisis Schedule Overruns Cost Estimate Overruns Software Quality Problems Software does not meet User Expectations Productivity of Software Developers has not been keeping up with demand Especially since the rise of the Internet until the internet bubble exploded in the Spring of 2000

Why is This? Software is Dynamic versus Static Software is Complex Software is difficult to Conceptualize Software is difficult to Represent Software is difficult to Communicate Software is difficult to Evaluate and Measure Software Developers have trouble learning what users want: Users do not know what they want Software developers misunderstand the problem There is a tremendous demand for software

What can we do about it? The Triangle For Success The needed elements for a successful project You need all three facets—a notation, a process, and a tool. You can learn a notation, but if you don't know how to use it (process), you will probably fail. You may have a great process, but if you can't communicate the process (notation), you will probably fail. And lastly, if you cannot document the artifacts of your work (tool), you will probably fail.

The Role of Process We need a process that Will serve as a framework for large scale and small projects  Adaptive – embraces ‘change!’ Opportunity for improvement not identification of failure! Iterative (small, incremental ‘deliverables’) Risk-driven (identify / resolve risks up front) Flexible, customizable process (not a burden; adaptive to projects) Architecture-centric (breaks components into ‘layers’ or common areas of responsibility…) Heavy user involvement Captures and institutionalizes best practices of Software Engineering Identify best ways of doing things

The Role of Notation Notation plays an important part in any model—it is the glue that holds the process together. ? Notation has three roles: It serves as the language for communicating decisions that are not obvious or can be inferred from the code itself. It provides semantics that are rich enough to capture all important strategic and tactical decisions. It offers a form concrete enough for humans to reason and for tools to manipulate?

The Role of Tool Any software development method is best supported by a tool The Rational Rose product family is designed to provide the software developer with a complete set of visual modeling tools for development of robust, efficient solutions to real business needs in the client/server, distributed enterprise, and real-time systems environments. Rational Rose products share a common universal standard, making modeling accessible to nonprogrammers wanting to model business processes as well as to programmers modeling applications logic.

What is CASE Tool Computer Aided Software Engineering Software systems which are intended to provide automated support for software process activities CASE tools are: Upper-CASE : tools to support early process activities of requirement and design Lower-CASE : tools to support later activities such as programming, debugging and testing

Why Rational Software?? Rational software covers the entire lifecycle of software production. Rational software provides methodology (process) and tools to cover all aspects of software production.