1 / 24

What is Software Engineering?

What is Software Engineering?. The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science, project management, engineering, application domains and other fields. (Wikipedia). Software Engineering Goal.

yank
Download Presentation

What is Software Engineering?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science, project management, engineering, application domains and other fields. (Wikipedia)

  2. Software Engineering Goal To produce solutions incorporating high-quality software.

  3. Why we Need Software Engineering? Easy problems (like building a one-story house) may not required engineering approach, but large projects and difficult problems (like building a skyscraper) cannot be effectively solved without it.

  4. Why we Need Software? 1. To boost productivity and reduce costs due to process automation. 2. To perform calculations that are unfeasible (if not impossible) to execute manually.

  5. What’s in Our Way? Bugs Human Error -> Fault -> Failure Safety-Critical Systems: 109 up hours Complexity Interdependence Unpredictability Uncontrollability

  6. Process Automation First there has to be a process that is worked out in ALL detail and IS efficient! Then and only then we can find a way to automate the process with the help of computers and software. Analyze first than synthesize (not the other way around).

  7. Practical Considerations The direct or indirect cost of executing the process manually must be greater than the cost of developing, maintaining and supporting the system automating the process! Software generates revenue when sold, hence development and support costs must be lower than the sale price times number of copies sold.

  8. Major Issues with Software Bugs Human error may lead to software fault that may lead to system failure. Support Users always make mistakes or do not know something. Maintenance software bug fixes feature changes hardware (including communication) failures software conflicts incorrect data upgrades

  9. Software Costs Money! Depending on the project the cost of software development can be only 10% of the total project cost. Maintenance and support could account for the lion share of all expenses. Return on Investment (ROI) is a dynamic measure.

  10. What is Good Software? The answer depends on requirements: Safety Critical Systems (e.g. medical, public transportation) Fault Tolerant Systems (e.g. military, space, communications) Available Systems (e.g. communications, embedded) User-Friendly (e.g. vending, information kiosks) Affordable (for mass market)

  11. What is Quality Software? Correct Reliable Efficient Usable Maintainable Re-usable Testable Scalable Portable Interoperable Simple Expandable

  12. What is Quality Process? Good (and simple!) process leads to good software Process modeling allows: Optimize / simplify the process Identify fault-prone locations Choose the easiest development process Develop ideas for fault-tolerant operation

  13. Return on Investment (ROI) Software Quality: Up vs. Down time Customer View: Dollars spent vs. Dollars Saved Industry / Developer View: Effort saved rather than cost

  14. Who is Involved?

  15. Who is Involved in Development?

  16. What is a System? System is an assemblage of entities/objects, real or abstract, comprising a whole with each and every component/element interacting or related to another one. Any object which has no relationship with any other element of the system is not a component of that system. A subsystem is then a set of elements which is a system itself and a part of the whole system. -- Wikipedia

  17. Systems Approach

  18. System Specifics Systems are always interrelated Environment may be uncontrollable System boundary needs to be defined Defining subsystems within your system is the first level of abstraction

  19. System Design Considerations Selecting proper technology (not necessarily the newest or the “coolest”) Finding developers for the selected technology Selecting right products and tools (do not use a cannon to kill a mosquito) Getting support for the products used Staying within budget (compromises inevitable)

  20. Software Architecture Modular Data-oriented Event-driven Object-oriented Service-based

  21. Software Architecture

  22. Prototyping Helps customer identify requirements Demonstrated feasibility of the design approach

  23. Dynamic World Get used to change – it is the only thing constant. Time-to-market is important! Efficiency IS important: Efficiency=Power~Support Cost Upgrades Inevitable Technologies Change: Migration Inevitable

  24. Exercise Think of a process or product that YOU think is important to automate or implement in software AND think of a way of doing it.

More Related