Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering and Best Practices

Similar presentations


Presentation on theme: "Software Engineering and Best Practices"— Presentation transcript:

1 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

2 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.

3 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”

4 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

5 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!

6 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

7 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

8 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

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

10 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

11 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?

12 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.

13 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

14 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.


Download ppt "Software Engineering and Best Practices"

Similar presentations


Ads by Google