ch.11 software engineering a preview. ch.12 outline definitions of software engineering (se)...
TRANSCRIPT
![Page 1: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/1.jpg)
Ch.1 1
Software Engineering
A Preview
![Page 2: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/2.jpg)
Ch.1 2
Outline
• Definitions of software engineering (SE)
• Historical origins of SE• SE as part of systems engineering• SE consists of many activities in
addition to programming• SE and other disciplines
![Page 3: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/3.jpg)
Software Engineering: A Preview
• A computer science field that is dealing w/– large & complex sw systems– buit by a team or team of engineers– multi-version systems– long life-cycle (changes -> fix detects,
enhance, adaptation to new environment etc.)
Ch.1 3
![Page 4: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/4.jpg)
Ch.1 4
Definitions• SE is
– «the application of engineering to software»
– «application of a systematic, disciplined, quantifiable, approach to development, operation, and maintenance of sw» IEEE
– «multi-person construction of multi verison sw» Parnas
![Page 5: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/5.jpg)
Ch.1 5
Meaning
• Programmer – writes a complete program– a personal activity
• Software engineer– writes a sw component to be combined
w/ components written by other SEs.– components –> reusable, modifiable– a team activity
![Page 6: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/6.jpg)
Ch.1 6
Need
• Programming evolved by algorithms, data structures, and OO programming.– not helping build [better, larger]
software.– writes a complete program– a personal activity
• differential equation solving (small program)• OS developing (scaled-up)
![Page 7: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/7.jpg)
Ch.1 7
Strategy
• Vital engineering strategy– define problem– use and develop tools and techs.
• Parameters are not clear for SE– no mathematical tools exist– relies on experience & debate
![Page 8: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/8.jpg)
Ch.1 8
Role of SE in system design
• SS is a part of a larger systems• Software requirements to be balanced against
others
– eg. Telephone switching system• Computers• Telephone lines• HW (satellite, telephones)• a controller SW
– eg. Traffic monitoring system– eg. Hospital administration
Satisfy requirements of HW, SW, and special devices
![Page 9: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/9.jpg)
Ch.1 9
Role of SE in system design
• Complex balancing require SE to participate in developing requirements for the whole system.
• SE is a part of systems engineering– compromise & trade-offs– SW offers flexibility, HW offers
performance (eg. Coin-operated coffee machine)
![Page 10: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/10.jpg)
A shortened history
• Programming – place sequence of instructions to get
the computer do sth useful– interaction btw programmer & computer– problematic when developing large
systems
• Large SW systems are significanty different
Ch.1 10
![Page 11: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/11.jpg)
Ch.1 11
A shortened history
• The field of software engineering was born in 1968 in response to chronic failures of large software projects to meet schedule and budget constraints – recognition of "the software crisis"
• Term became popular after NATO Conference in Garmisch Partenkirchen (Germany), 1968
![Page 12: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/12.jpg)
Ch.1 12
History – problem defined
• Problems in constructing large systems – understanding of problem– too much communication time– people leaving the Project– changes are not easy to apply
![Page 13: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/13.jpg)
Ch.1 13
History – solutions
• Offered solutions– better managemet techs– different team organization– better programming languages & tools– uniform coding conventions– mathematical approaches
• Conclusion: apply engineering to software
![Page 14: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/14.jpg)
History
SW costs < HW costs (was)SW costs >> HW costs (now)
•SE deals w/ entire life-cycle– conception -> design -> development
-> maintenance -> deployment -> evolution
Ch.1 14
![Page 15: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/15.jpg)
Ch.1 15
Role of software engineer
• Software Engineer – must be a good-programmer
• Programming skill not enough (programming-in-the-small)
– familiar w/ design– translate vague requirements– form precise specifications– build models to balance trade-offs– A good Communicator– Schedule work (own and others)
programming-in-the-large
![Page 16: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/16.jpg)
Ch.1 16
The software lifecycle«In theory- theory and practice are the same. In practice, they never are.»
Waterfall model -> life-cycle model1. Requirements analysis & specification
– feasibility study (costs & benefits)– by customer, developer, or marketing
org.– should be in end-user terms– requires interaction w/ users
![Page 17: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/17.jpg)
Ch.1 17
The software lifecycleWaterfall model -> life-cycle model2. System design & specification
– architectural (high-level) design– detailed design– what – how dichotomy
3. Coding & module testing– produce actual code for end-user
the problem(analysis)
to solve(design)
![Page 18: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/18.jpg)
Ch.1 18
The software lifecycleWaterfall model -> life-cycle model4. Integration & system testing
– integrate components & test whole system
– might require testing code
5. Delivery & maintenance– deliver product (SW) to the customer– make sure it works well
![Page 19: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/19.jpg)
Ch.1 19
The software lifecycle(a preview)
Requirements analysis and specification
Design and specification
Code and module testing
Integration and system testing
Delivery and maintenance
waterfall model
Concurrent engineering?•parallelism
![Page 20: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/20.jpg)
Ch.1 20
Relationships betweenSE and other CS disciplinesThere is a synergistic relationship1. Programming languages SE -> PL
– modularity (Java packages)– Exception-handling (reliable SW)– UI (visual languages)PL -> SE– precise requirement (by machine processible PLs)– Forming a language of commands (UNIX Shell commands)– Formalization leads to automation (exploited for automatic SW generation)
![Page 21: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/21.jpg)
Ch.1 21
Relationships betweenSE and other CS disciplines2. Operating systems
OS -> SE–initial large projects–virtual machines, levels of abstraction–separation of policy from mechanism fairness in task scheduling – time-slicing concurrency (what – policy) (how – mechanism)
SE -> OS–portable OSs–Protected and unprotected kernels (command line interpreter)
![Page 22: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/22.jpg)
Ch.1 22
Relationships betweenSE and other CS disciplines3. Databases
DB -> SE–data independence notion (separation&specification)
• Use data w/o worrying about representation• DB offers concurrent Access to data (useful component)
SE -> DB–long transactions
• CVS (lock code, work on a small piece, forbid access)
![Page 23: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/23.jpg)
Ch.1 23
Relationships betweenSE and other CS disciplines4. Artificial intelligence
AI -> SE–explaratory development notion caused uncertainty handling (reverse Software Engineering)–programming assistants–cognitive models
• UI design
SE -> AI–expert systems
• Separation of «known» facts by «used» rules
![Page 24: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/24.jpg)
Ch.1 24
Relationships betweenSE and other CS disciplines5. Theoretical models
TM -> SE–Finite-state machines
• SW specification & SW design
–Petri nets• Modeling of SW and HW
–Logic• Specification languages
SE -> TM–Abstract data type notion
![Page 25: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/25.jpg)
Ch.1 25
Relationships betweenSE and other disciplines
SE cannot be practiced in vacuum.1.Management science
– project estimation, scheduling, human resource planning
2.Systems engineering– certain laws govern the behavior of
any complex system– analysis models
![Page 26: Ch.11 Software Engineering A Preview. Ch.12 Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering](https://reader036.vdocuments.us/reader036/viewer/2022062314/56649e765503460f94b775c4/html5/thumbnails/26.jpg)
Ch.1 26
Concluding remarks
! SE is an evolving engineering discipline.
– deals w/ systematic approaches to building large SW systems by teams of programmers
! We will study essential principles to the engineering activity of building SW.