What is Software Engineering? The discipline of designing, creating, and maintaining software by...

24
What is Software What is Software Engineering? 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)

Transcript of What is Software Engineering? The discipline of designing, creating, and maintaining software by...

Page 1: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

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)

Page 2: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Software Engineering GoalSoftware Engineering Goal

To produce solutions incorporating high-quality software.

Page 3: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Why we Need Software Engineering?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.

Page 4: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Why we Need Software?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.

Page 5: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

What’s in Our Way?What’s in Our Way?

1. BugsHuman Error -> Fault -> Failure

Safety-Critical Systems: 109 up hours

2. Complexity

3. Interdependence

4. Unpredictability

5. Uncontrollability

Page 6: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Process AutomationProcess Automation

1. First there has to be a process that is worked out in ALL detail and IS efficient!

2. Then and only then we can find a way to automate the process with the help of computers and software.

3. Analyze first than synthesize (not the other way around).

Page 7: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Practical ConsiderationsPractical Considerations

1. 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!

2. Software generates revenue when sold, hence development and support costs must be lower than the sale price times number of copies sold.

Page 8: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Major Issues with SoftwareMajor Issues with Software

1. BugsHuman error may lead to software fault that may

lead to system failure.

2. SupportUsers always make mistakes or do not know

something.

3. Maintenance• software bug fixes• feature changes• hardware (including communication) failures• software conflicts• incorrect data• upgrades

Page 9: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Software Costs Money!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.

Page 10: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

What is Good Software?What is Good Software?

The answer depends on requirements:

1. Safety Critical Systems (e.g. medical, public transportation)

2. Fault Tolerant Systems (e.g. military, space, communications)

3. Available Systems (e.g. communications, embedded)

4. User-Friendly (e.g. vending, information kiosks)

5. Affordable (for mass market)

Page 11: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

What is Quality Software?What is Quality Software?

1. Correct

2. Reliable

3. Efficient

4. Usable

5. Maintainable

6. Re-usable

7. Testable

8. Scalable

9. Portable

10. Interoperable

11. Simple

12. Expandable

Page 12: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

What is Quality Process?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

Page 13: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Return on Investment (ROI)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

Page 14: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Who is Involved?Who is Involved?

Page 15: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Who is Involved in Development?Who is Involved in Development?

Page 16: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

What is a System?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

Page 17: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Systems ApproachSystems Approach

OBJECTS

ACTIVITIESEVENTS

Boundary ENVIRONMENTTHE

SYSTEM

Page 18: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

System SpecificsSystem 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

Page 19: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

System Design ConsiderationsSystem 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)

Page 20: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Software ArchitectureSoftware Architecture

•Modular

•Data-oriented

•Event-driven

•Object-oriented

•Service-based

Page 21: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Software ArchitectureSoftware Architecture

Page 22: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

PrototypingPrototyping

•Helps customer identify requirements

•Demonstrated feasibility of the design approach

Page 23: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

Dynamic WorldDynamic 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

Page 24: What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,

ExerciseExercise

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.