Systems Development & Economics
Course Introducton: Basic Concepts of Sofware Engineering
Context: Sofware is everywhere
- Digitalizaton is the use of digital technologies to change a business model and
provide new revenue and value-producing opportunites; it is the process of
moving to a digital business.
- Digitalizaton is primarily (but not only, see next slide) about providing sofware
support to products and services that were not supported by sofware in the
past.
- It touches every functon of the company so the organizaton of every aspect of
the company should be rethought at the light of the digital wave
- The importance of sofware and data is increasing every year and will contnue
to increase (exponentally) so it is very important to understand the tools to
represent the sofware problem in organizatonal terms and be able to design a
sofware soluton for it. If you don’t use the the right tools you will soon be out
of business
- Nowadays cars use more than 100 million lines of code!
- 3 important teachings (in the context of the Business Informaton Management
training)see image slide 7
1. All of this is driven by sofware
2. All of this uses and generates tremendous amounts of data
3. All of this needs a sofware ecosystem (androïde, …)to properly work
remember these 3
1
,Note:
- IT is about changing the way a company is operaton. ou are able to do things more
efciently.
- Data driven services = big data, the data available has never been as big as it is now. It could
be relevant and interestng for a big company. But for regular/traditonal companies, they are
stll learning how to manage their day to day data.
- All of this needs a sofware ecosystem to properly work. “Sofware ecosystem” (an OS,
sofware that needs other sofware, diferent technologies/sofware systems that are working
together)see slide 7
- IOT is not new but what is new that we now can design much cheaper devices.
1 Part I: Why Sofware Engineering?
The process of analysis.
Note:
- In order build a soluton which is manageable cut the problem in pieces
- Most of the tme the problems are very complex and huge. So, do not try to face the whole
problem at once. ou need to cut the problem into pieces. Identfy the diferent processes and
functonality. Don’t try to make a lot of connectons between the subproblems.
- Need to know what the problem is and why sofware is needed. It will not all be completed at
one tme.
- It is a process, you build it process by process. People will need organizaton, given roles to
each member. In order to plan how you will do the project.
- Diferent Reeruirements - what are the true reruirements. This is the biggest challenge you can
have. A good IT manager is a good psychologist.
- Design the system. We are in the context of designing sw solutons for companies. All from an
operatons perspectve.
- Once you analyzed and have a soluton for all of the subproblems you bring everything
together to one whole soluton, such as the interface look and feel and dialoguing with the
same database, etc. to keep things manageable
The process of synthesis.
2
, - Sofware Engineering (SE) is the discipline related to the design, development, maintenance,
testng, and evaluaton of computer sofware
o To help in this, we use methods, tools, procedures and paradigms
1. Method or technirue: formal procedure for producing some result
2. Tool : instrument or automated system to do something in a beter (more
accurate, more efcient, more productve,…) way.
3. Procedure: ex. Test procedure: combinaton of tools and technirues. (It’s
like a recipe in cooking)
4. Paradigm: like a partcular approach of philosophy for building sofware (f.i.
OO, procedural, …). (It’s like a cooking ‘style’ in cooking)
o Where does the SW engineer ft in?
1. A sw engineer focuses on the computer as a problem-solving tool (he/she is
not a programmer or a tool designer, or…)
Note:
Object Oriented Programming: In all the programs we wrote tll now, we have designed our program
around functons i.e. blocks of statements which manipulate data. This is called the procedure-
oriented way of programming. There is another way of organizing your program which is to combine
data and functonality and wrap it inside something called an object. This is called the object-
oriented programming paradigm. Most of the tme you can use procedural programming, but when
writng large programs or have a problem that is beter suited to this method, you can use object-
oriented programming technirues.
Classes and objects are the two main aspects of object-oriented programming. A class creates a
new type where objects are instances of the class.
- How successful have we been?
o Are users happy with their existng sofware?
• es and no!
• es : it improved our life in many aspects!
3
, • No : errors occur; sometmes not so important, sometmes critcal
(even life threatening)
• A human error can lead to a fault, and a fault can lead to failure!
(see next slide)
• What is good (ruality) sofware? (see also next slides)
o Quality of the product
o Quality of the process that results in the product
o Quality of the product in the business environment where it will be used
Question Answer
What is sofware? Computer programs and associated documentaton. Sofware
products may be developed for a partcular customer or may be
developed for a general market.
What are the atributes of Good sofware should deliver the reruired functonality and
good sofware? performance to the user and should be maintainable, dependable and
usable.
What is sofware Sofware engineering is an engineering discipline that is concerned
engineering? with all aspects of sofware producton.
What are the fundamental Sofware specifcaton, sofware development, sofware validaton
sofware engineering and sofware evoluton.
actvites?
What is the diference Computer science focuses on theory and fundamentals; sofware
between sofware engineering is concerned with the practcalites of developing and
engineering and computer delivering useful sofware.
science?
What is the diference System engineering is concerned with all aspects of computer-based
between sofware systems development including hardware, sofware and process
engineering and system engineering. Sofware engineering is part of this more general
engineering? process.
What are the key challenges Coping with increasing diversity, demands for reduced delivery tmes
facing sofware engineering? and developing trustworthy sofware.
What are the costs of Reoughly 60% of sofware costs are development costs, 40% are testng
sofware engineering? costs. For custom sofware, evoluton costs ofen exceed development
costs.
What are the best sofware While all sofware projects have to be professionally managed and
engineering technirues and developed, diferent technirues are appropriate for diferent types of
methods? system. For example, games should always be developed using a
series of prototypes whereas safety critcal control systems reruire a
complete and analyzable specifcaton to be developed. ou can’t,
therefore, say that one method is beter than another.
What diferences has the The web has led to the availability of sofware services and the
web made to sofware possibility of developing highly distributed service-based systems.
engineering? Web-based systems development has led to important advances in
programming languages and sofware reuse.
4
,1.1 What is good sofware?
- Quality of the product
o Quality reruirements of the sofware are called non-functonal reruirements (NFRe). E.g.
usability, flexibility, security, …
o Quality and functonality are intertwined (functonal support NFRe)
o Quality reruirements are satsfed up to a certain level. E.g. a sofware is never 100%
secure, flexible, usable, ...
- Quality of the process
o Idea: improving the sofware development to increases the ruality of the products
o See later: process models like iteratve, agile development
- Quality in the context of the business environment
o Quality viewed in terms of products and services being provided
o Quality must be viewed in functon of the business value
o One important aspect: money (ReOI) (via payback, accountng rate-of-return, discounted
cash flow)
Note:
- Don’t invest much in reliability if you are a small business.
- Governance is management of management, take a decision and build a system on itReOI
Non-functonaa requirement: In systems engineering and reruirements engineering, a non-functonal
reruirement (NFRe) is a reruirement that specifes criteria that can be used to judge the operaton of
a system, rather than specifc behaviors. They are contrasted with functonal reruirements that
defne specifc behavior or functons. The plan for implementng functonal reruirements is detailed
in the system design. The plan for implementng non-functonal reruirements is detailed in the
system architecture, because they are usually Architecturally Signifcant Reeruirements.
Broadly, functonal reruirements defne what a system is supposed to do, and non-functonal
reruirements defne how a system is supposed to be. Functonal reruirements are usually in the
form of "system shall do <reruirement>", an individual acton or part of the system, perhaps
explicitly in the sense of a mathematcal functon, a black box descripton input, output, process and
control functonal model or IPO Model. In contrast, non-functonal reruirements are in the form of
"system shall be <reruirement>", an overall property of the system as a whole or of a partcular
aspect and not a specifc functon. The system's overall propertes commonly mark the diference
between whether the development project has succeeded or failed.
Non-functonal reruirements are ofen called "ruality atributes" of a system. Other terms for non-
functonal reruirements are "rualites", "ruality goals", "ruality of service reruirements",
"constraints", "non-behavioral reruirements”, or "technical reruirements".[3] Informally these are
sometmes called the "ilites", from atributes like stability and portability. Qualites that are non-
functonal reruirements can be divided into two main categories:
1. Executon rualites, such as safety, security and usability, which are observable during
operaton (at run tme).
2. Evoluton rualites, such as testability, maintainability, extensibility and scalability, which are
embodied in the statc structure of the system
Ex.
- FRe: you can check the balance on banking app
- NFRe: security= banking app must not be hackable, flexibility=must be usable on Android,
usability=ease of use, reliability=doesn’t go down, etc.
Exam=need to know the difference between functional and NFR
5
, Product Description
characteristic
Maintainabilit Sofware should be writen in such a way so that it can evolve to meet the
y changing needs of customers. This is a critcal atribute because sofware change is
an inevitable reruirement of a changing business environment.
Dependability Sofware dependability includes a range of characteristcs including reliability,
and security security and safety. Dependable sofware should not cause physical or economic
damage in the event of system failure. Malicious users should not be able to
access or damage the system.
Efciency Sofware should not make wasteful use of system resources such as memory and
processor cycles. Efciency therefore includes responsiveness, processing tme,
memory utlisaton, etc.
Acceptability Sofware must be acceptable to the type of users for which it is designed. This
means that it must be understandable, usable and compatble with other systems
that they use.
Note:
- Don’t put the threshold too high (like with authentcatng every tme you do an acton in an app)
because it lowers usability. There is a tradeof.
- Know which nonfunctonal reruirement is key for you to know where the tradeofs should be
made. All about thresholds and compromises.
- Acceptability getng it adopted by users could be challenging. The support you give to the users
is very important. ou need special support as you go live, for at least a month afer go live. It’s
more about psychology.
- when faced with the rueston of fring employees because of sw:
o What will it cost to fre them, let’s see what we can do with these people. We are a proft
company. And it is outside of the scope of an consultant.
1.2 Who does sofware engineering?
- Key component: communicaton between customer and sofware development team!
o Customer: company, organizaton or person who is paying for the system to be developed
Controls the funds, negotates contract and acceptance criteria
o Development team: company, organizaton or group of persons who is (are) building the
system
- User: those who will use the system
- More complex relatons exist (e.g. COTS sw,…)
6