01 ch1 introduction
TRANSCRIPT
-
8/11/2019 01 Ch1 Introduction
1/39
Software
Engineering
Introduction
-
8/11/2019 01 Ch1 Introduction
2/39
SE. IntroductionAug-2014
What is software?
Computer programand associateddocumentation.
2
-
8/11/2019 01 Ch1 Introduction
3/39
Aug-2014 SE. Introduction
Software products may be
developed for a particularcustomer or may be developed fora general market.
3
-
8/11/2019 01 Ch1 Introduction
4/39
SE. IntroductionAug-2014
Attributes of good
software?Good software should deliver therequired functionalityandperformanceto the user andshould be maintainable,dependableand usable.
4
-
8/11/2019 01 Ch1 Introduction
5/39
Aug-2014 SE. Introduction
Essential attributes of
good software
5
-
8/11/2019 01 Ch1 Introduction
6/39
SE. IntroductionAug-2014
What is software
engineering?Software engineering is an engineeringdisciplinethat is concerned with all
aspects of software production
Not just technical process ofdevelopment. Also project
management and the development oftools, methodsetc. to supportsoftware production.
6
-
8/11/2019 01 Ch1 Introduction
7/39SE. IntroductionAug-2014
Fundamental software
engineering activitiessoftware specification
customers and engineers define the software that is to be produced and theconstraints on its operation
software development
software is designed and programmed
software validation
software is checked to ensure that it is what the customer requires
software evolution
software is modified to reflect changing customer and market requirements.
7
-
8/11/2019 01 Ch1 Introduction
8/39SE. IntroductionAug-2014
Fundamental software
engineering activitiesAlternative:definingthe software developmentprocessto be used
managingthe development project
describingthe intended software product
designingthe product
implementingthe product
testing(the parts, integrating and whole) of the product
maintainingthe product
8
-
8/11/2019 01 Ch1 Introduction
9/39
SE. IntroductionAug-2014
Key challenges facing
software engineering?
increasing diversity, demands forreduced delivery timesanddeveloping trustworthy software.
9
-
8/11/2019 01 Ch1 Introduction
10/39
-
8/11/2019 01 Ch1 Introduction
11/39
Aug-2014 SE. Introduction
Other FAQs
11
-
8/11/2019 01 Ch1 Introduction
12/39
SE. IntroductionAug-2014
Software engineering
fundamentalsSome fundamental principles apply to all types of softwaresystem, irrespective of the development techniques used:
Systems should be developed using a managed and understood
development process. Of course, different processes are used fordifferent types of software.
Dependabilityand performanceare important for all types ofsystem.
Understanding and managing the software specificationandrequirements(what the software should do) are important.
Where appropriate, you should reuse software that has alreadybeen developed rather than write new software.
12
-
8/11/2019 01 Ch1 Introduction
13/39
SE. IntroductionAug-2014
Application typesStand-alone applications
Interactive transaction-based applications
Embedded control systems
Batch processing systems
Entertainment systems
Systems for modeling and simulation
Data collection systems
Systems of systems
13
-
8/11/2019 01 Ch1 Introduction
14/39
SE. IntroductionAug-2014
UML
Why?
Communication effectively
Graphic annotation
14
-
8/11/2019 01 Ch1 Introduction
15/39
SE. IntroductionAug-2014
UML
15
-
8/11/2019 01 Ch1 Introduction
16/39
SE. IntroductionAug-2014
UML
16
-
8/11/2019 01 Ch1 Introduction
17/39
SE. IntroductionAug-2014
Software project
managementActivities involved in ensuring
software is delivered on timeand onschedule and in accordance with therequirements(technical / non-
technical / budget) of the organisationsdevelopingand procuring the software.
17
-
8/11/2019 01 Ch1 Introduction
18/39
SE. IntroductionAug-2014
Proj. man. - success
criteriaDeliver the software to the customer at theagreed time.
Keep overall costs within budget.
Deliver software that meets the customersexpectations.
Maintain a happy and well-functioningdevelopment team.
18
-
8/11/2019 01 Ch1 Introduction
19/39
SE. IntroductionAug-2014
Risk
A risk is a probability that someadverse circumstance will occur
19
-
8/11/2019 01 Ch1 Introduction
20/39
SE. IntroductionAug-2014
Risk
20
-
8/11/2019 01 Ch1 Introduction
21/39
SE. IntroductionAug-2014
Risk
21
Consider each risk and develop a strategy to manage it
Avoidance strategies
The probability that the risk will arise is reduced;
Minimisation strategies
The impact of the risk on the project or product will bereduced;
Contingency plans
If the risk arises, contingency plans are plans to deal withthat risk;
-
8/11/2019 01 Ch1 Introduction
22/39
SE. IntroductionAug-2014
Teamwork
22
Any work that needs teamwork?
Any work that needs individualwork?
Software development?
-
8/11/2019 01 Ch1 Introduction
23/39
SE. IntroductionAug-2014
Teamwork
23
Most software engineering is a group activity
The development schedule for most non-trivial software projects issuch that they cannot be completed by one person working alone.
A good group is cohesive and has a team spirit. The peopleinvolved are motivated by the success of the group as well asby their own personal goals.
Group interaction is a key determinant of group performance.
Flexibility in group composition is limited
Managers must do the best they can with available people.
-
8/11/2019 01 Ch1 Introduction
24/39
SE. IntroductionAug-2014
Cost
24
Cost vs. price
-
8/11/2019 01 Ch1 Introduction
25/39
SE. IntroductionAug-2014
`
25
Experience-based techniques
The estimate of future effort requirements is based on themanagers experience of past projects and the applicationdomain. Essentially, the manager makes an informed
judgment of what the effort requirements are likely to be.
Algorithmic cost modeling
In this approach, a formulaic approach is used tocompute the project effort based on estimates of productattributes, such as size, and process characteristics, suchas experience of staff involved.
-
8/11/2019 01 Ch1 Introduction
26/39
Aug-2014 SE. Introduction
Method 1
A simply queue simulation 120-400 LoC
The (first release) Encounter game
4-15 queues + 30-90 additional components of comparable size
=> (30+4) x 120 to (90+15) x 400 = 5-42 KLoC
Use graphics costs 1.5 to 4 times more
=> 7.5 170 KLoC
Method 2
A good video game required 5-20 expert programmers for 1-2 years
We invert 1/10
Assume 5-25 LoC/h (fully tested code)
=> 1/10 x (5-25 lines/h) x (5-20 programmers) x (1-2 years) x (48-50 weeks/year) x (35-60 hours/week) = 4.2-300 KLoC
26
-
8/11/2019 01 Ch1 Introduction
27/39
Aug-2014 SE. Introduction
COCOMO formula - basic
Ex:
27
Effort in Person-months = a!
KLOCb
Duration = c
!Effort d = c! ad!KLOC bd
Software Project a b c d
Organic (stand-alone app.) 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded (integral HW-SW sys.) 3.6 1.20 2.5 0.32
-
8/11/2019 01 Ch1 Introduction
28/39
SE. IntroductionAug-2014
Software engineering
ethics
Ethics?
28
-
8/11/2019 01 Ch1 Introduction
29/39
Aug-2014 SE. Introduction
Software engineering involves widerresponsibilitiesthan simply the applicationof technical skills.
Software engineers must behavein anhonestand ethically responsible wayifthey are to be respected as professionals.
Ethical behaviour is more than simplyupholding the lawbut involves following aset of principlesthat are morally correct.
29
-
8/11/2019 01 Ch1 Introduction
30/39
SE. IntroductionAug-2014
ACM/IEEE Code of
EthicsThe professional societiesin the US have cooperatedto produce acode of ethical practice.
Membersof these organisations sign up to the codeof practice when they join.
The Codecontains some Principlesrelated to thebehaviourof and decisionsmade by professionalsoftware engineers, including practitioners,educators, managers, supervisors and policy makers,as well as trainees and students of the profession.
30
-
8/11/2019 01 Ch1 Introduction
31/39
SE. IntroductionAug-2014
IEEE code of ethics1. to accept responsibilityin making decisions consistent
with the safety, healthand welfareof the public, and todisclosepromptly factors that might endangerthe publicor the environment;
2. to avoid real or perceived conflicts of interest wheneverpossible, and to disclose them to affected parties whenthey do exist;
3. to be honestand realisticin stating claims or estimatesbased on available data;
4. to reject briberyin all its forms;
31
-
8/11/2019 01 Ch1 Introduction
32/39
SE. IntroductionAug-2014
IEEE code of ethics5. to improvethe understanding of technology, its
appropriate application, and potentialconsequences;
6. to maintainand improveour technical competenceand to undertake technological tasks for others onlyif qualified by training or experience, or after fulldisclosure of pertinent limitations;
7. to seek, accept, and offerhonest criticismoftechnical work, to acknowledge and correct errors,and to credit properly the contributions of others;
32
-
8/11/2019 01 Ch1 Introduction
33/39
SE. IntroductionAug-2014
IEEE code of ethics8. to treatfairlyall persons regardlessof such
factors as race, religion, gender, disability, age,or national origin;
9. to avoid injuring others, their property,reputation, or employmentby false ormalicious action;
10.to assist colleaguesand co-workers in theirprofessional development and to supportthemin following this code of ethics.
33
-
8/11/2019 01 Ch1 Introduction
34/39
SE. IntroductionAug-2014
ACM Code of Ethics and
Professional Conduct1.1 Contribute to society and human well-being.1.2 Avoid harm to others.
1.3 Be honest and trustworthy.
1.4 Be fair and take action not to discriminate.
1.5 Honor property rights including copyrights and patent.
1.6 Give proper credit for intellectual property.
1.7 Respect the privacy of others.
1.8 Honor confidentiality.34
ACM SE C d f E hi d
-
8/11/2019 01 Ch1 Introduction
35/39
SE. IntroductionAug-2014
ACM SE Code of Ethics andProfessional Practice
(short version)PUBLIC - Software engineers shall act consistently with the public interest.CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests oftheir client and employer consistent with the public interest.
PRODUCT - Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
JUDGMENT - Software engineers shall maintain integrity and independence in their professionaljudgment.
MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote anethical approach to the management of software development and maintenance.
PROFESSION - Software engineers shall advance the integrity and reputation of the professionconsistent with the public interest.
COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
SELF - Software engineers shall participate in lifelong learning regarding the practice of theirprofession and shall promote an ethical approach to the practice of the profession.
35
-
8/11/2019 01 Ch1 Introduction
36/39
SE. IntroductionAug-2014
Summary
Software engineering is an engineering discipline that isconcerned with all aspects of software production.
Essential software product attributes are maintainability,dependability and security, efficiency and acceptability.
The high-level activities of specification, development,validation and evolution are part of all software processes.
The fundamental notions of software engineering areuniversally applicable to all types of system development.
36
-
8/11/2019 01 Ch1 Introduction
37/39
SE. IntroductionAug-2014
SummaryThere are many different types of system andeach requires appropriate softwareengineering tools and techniques for theirdevelopment.
The fundamental ideas of softwareengineering are applicable to all types of
software system.
UML - language (communication effectively?)
37
-
8/11/2019 01 Ch1 Introduction
38/39
SE. IntroductionAug-2014
SummaryProject management is to ensure thesoftware to be developed as it is
required on schedule and withinbudget
Risk
Planning
Cost estimation
38
-
8/11/2019 01 Ch1 Introduction
39/39
SummarySoftware engineers haveresponsibilities to the engineering
profession and society. They should notsimply be concerned with technicalissues.
Professional societies publish codes ofconduct which set out the standards ofbehaviour expected of their members.