280 likes | 541 Views
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.
E N D
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 To produce solutions incorporating high-quality software.
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.
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.
What’s in Our Way? Bugs Human Error -> Fault -> Failure Safety-Critical Systems: 109 up hours Complexity Interdependence Unpredictability Uncontrollability
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).
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.
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
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.
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)
What is Quality Software? Correct Reliable Efficient Usable Maintainable Re-usable Testable Scalable Portable Interoperable Simple Expandable
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
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
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
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
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)
Software Architecture Modular Data-oriented Event-driven Object-oriented Service-based
Prototyping Helps customer identify requirements Demonstrated feasibility of the design approach
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
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.