Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

CPE 310 SOFTWARE ENGINEERING

Spring Semester-2023

Dr. Nesrin AYDIN ATASOY

CONTENTS

Aim Of Lesson
Software engineering is about imagination and creativity. The process is creating something
apparently tangible from nothing. Software engineering methods have not yet been
completely analyzed and systematized. Software engineering is about the creation of large
pieces of software that consist of thousands of lines of code and involve many person months
of human effort.
Books, Videos and Online Course Documents
1. Software Engineering, Ian Sommerville, 9th edition, Addison-Wesley
2. Software Engineering For Students, Douglas Bell, 4th edition, AddisonWesley
3. Object - Oriented Software Engineering, Timothy C. Lethbridge and Robert
Laganière, 2nd edition, McGraw- Hill
Evaluations
1 Mid-term, 1 Final Exam and 1 Project
WEEK 1: DEFINITION AND IMPORTANCE of SOFTWARE ENGINEERING

 What is software?

 Performing a defined function,

 With inputs and outputs,

 Working on any hardware,

 It is a product of computer program or programs.

 Configuration files used to set up these programs

 User documentation explaining how to use the software

 System documentation describing the structure of the software

 It includes all methods, tools, information and documents that can be used to
combine and manage logic, data, documents, human and program components
for a specific production purpose [1, 2].

The software can be examined as General and Special for Customer Software [3].

 General Software: It is software whose features are determined according to


the general need in the market. Ex: MS Office, Photoshop, AutoCAD.

 Special for Customer: It is the software whose features are determined


according to the needs of the customer. Ex: Pharmacy Stock Program,
University Automation Program.
 Hardware (Manufacturing)- Software (Development) Comparison

 Software is engineered, not manufactured.


 Once a hardware product has been manufactured, it is difficult or impossible to
modify. In contrast, software products are routinely modified and upgraded.
 In hardware, hiring more people allows you to accomplish more work, but the same
does not necessarily hold true in software engineering.
 Unlike hardware, software costs are concentrated in design rather than production.

 Software Deteriorates

 Software does not wear-out, but it does deteriorate due to changes


 Most software models a part of reality and reality evolves.
 If software does not evolve with the reality that is being modeled, then it deteriorates

 Where is the Software?

 In computer systems

Operating systems (eg: Windows, Linux)

End-user programs (eg:Photoshop,dreamveawer)

Compilers (eg: javac, pascal, gcc)

 Aircrafts, Space Shuttles (Eg: F16, Discovery Space Shuttle)


 Cellular Phones (Eg: IOS, Android etc.)
 Education (Eg: Distance Learning)
 Entertainment, Transportation
 Health systems, Military
 And many more….
 Granularity of Software

Trivial: 1 month, 1 programmer, 500 LOC, Ex: Intro programming assignments

Very small: 3 months, 1 programmer, 2000 LOC, Ex: Course project

Small: 1 year, 3 programmers, 50K LOC, Ex: Mobile App

Medium: 3 years, 10s of programmers, 100K LOC, Ex: Optimizing compiler

Large: 5 years, 100s of programmers, 1M LOC, Ex: MS Word, Excel

Very large: 10 years, 1000s of programmers, 10M LOC, Ex: Air traffic control,
Telecommunications, space shuttle

 What type of software?

 Small single-developer projects can typically get by without Software


Engineering.
o Typically no deadlines, small budget (freeware), not safetycritical

 Software Engineering is especially required for


o Medium to large projects (50,000 lines of code and up)
o Multiple subsystems
o Teams of developers (often geographically dispersed)
o Safety-critical systems (software that can kill people...)
 What is Software Engineering?

Software Engineering term first emerged in 1968 at the NATO Software Engineering
conference in Germany. It emerged with the evolution of Computer Science discipline.
[4].

Software Engineering has been described in many ways, some are as follows:

 Software engineering is obtained robust engineering principles to develop


economical software that works accurately and efficiently on real machines
[5].

 Software engineering is an engineering science dealing with all situations


related to software production.

 Software engineering; applied for the development, operation and maintenance


of the software product; is a systematic, disciplined and measurable
approach[6].

 Software Engineering is concerned with …


o Technical processes of software development
o Software project management
o Development of tools, methods and theories to support software production
o Getting results of the required quality within the schedule and budget
o Often involves making compromises
o Often adopt a systematic and organized approach
o Less formal development is particularly appropriate for the development of web-based
systems

 Software Engineering is important because

o Individuals and society rely on advanced software systems


o Produce reliable and trustworthy systems economically and quickly
o Cheaper in the long run to use software engineering methods and techniques for
software systems

 Fundamental activities being common to all software processes:

o Software specification: customers and engineers define software that is to be produced


and the constraints on its operation
o Software development: software is designed and programmed
o Software validation: software is checked to ensure that it is what the customer requires
o Software evolution: software is modified to reflect changing customer and market
requirements

 Software Engineer

Software Engineer is the software engineering job. However, person cannot do this
job without formal training. The software engineer is not just an encoder. The person
who knows best how to tell user requests to the computer. It is mostly related to
people and deals with the logical dimension of the software. Today, software
engineering has become a profession and has schools.

 Importance of Software Engineering

Computer software is now everywhere in our lives. For this, the goal of Software
Engineering;

 To eliminate the complexity of software development,


 True,
 Reliable,
 To produce suitable products.

Errors in software production show propagation. For this reason, error correction costs
increase gradually in the following stages. Its main goal is to realize the production with the
lowest cost and the highest quality. Therefore, the hardware cost is ineffective besides the cost
of the software. Table 1 shows error correction costs in software production [2].

Table 1. Error correction costs in software production.

Analysis 1

Design 5

Coding 10

Test 25

Acceptance
50
Test

Operating 100
 Software Quality Assurance

The objectives of software quality assurance activities can be summarized as follows [2]:

 Reducing software costs,


 Facilitating software production management,
 Elimination of documentation and standard troubles.

Some software quality criteria are shown in Table 2.

Table 2. Sample software quality criteria.

Economy Completeness Reusability Effectiveness Integrity

Reliability Modularity Documentation Convenience Cleaning

Interchangeability Validity Generality Portability Maintainability

Essential attributes of good software:

 Maintainability

o Evolve to meet the changing needs of customers

o Software change is inevitable (see changing business environment)

 Dependability and security

o Includes reliability, security and safety

o Should not cause physical or economic damage in case of system failure

o Take special care for malicious users

 Efficiency

o Includes responsiveness, processing time, memory utilization

o Care about memory and processor cycles


 Acceptability

o Acceptable to the type of users for which it is designed

o Includes understandable, usable and compatible with other systems

 Software Perception by Individuals

Management, customers and analysts are the most important stakeholders in the perception of
software.

Administration according to an old belief, a good manager manages all projects. But this is
not true for today's projects. Because, In a constantly evolving world, a good manager must be
well-off with the latest technology.

Customer is the person who directs the project to be developed and determines the
qualifications of the project in line with his own wishes. Before starting software
development, it has a great role in understanding and analyzing the subject thoroughly.

Operator should analyze the subject very well before coding begins, design it with all the
details and then coding should begin.

 Participants and Roles

• Developing software requires collaboration of many people with different


backgrounds and interests.

• All the persons involved in the software project are called


participants (stakeholders)

• The set of responsibilities in the project of a system are defined


as roles.

• A role is associated with a set of tasks assigned to a participant.

• Role is also called stakeholder

• The same participant can fulfill multiple roles.

Case of roles:
 Why is software development difficult?

 Change (in requirements & technology)

o The “Entropy” of a software system increases with each change: Each


implemented change erodes the structure of the system which makes the next
change even more expensive (“Second Law of Software Dynamics”).
o As time goes on, the cost to implement a change will be too high, and the system
will then be unable to support its intended task. This is true of all systems,
independent of their application domain or technological base.

 The problem domain (also called application domain) is difficult


 The solution domain is difficult
 The development process is difficult to manage
 Software offers extreme flexibility

 Dealing with Complexity

1. Abstraction

We use Models to describe Software Systems:

1. Object model: What is the structure of the system?


2. Functional model: What are the functions of the system?
3. Dynamic model: How does the system react to external events?
4. System Model: Object model + functional model + dynamic model

Other models used to describe Software System Development:

1. Task Model:
o PERT Chart: What are the dependencies between tasks?
o Schedule: How can this be done within the time limit?
o Organization Chart: What are the roles in the project?
2. Issues Model:
o What are the open and closed issues?
o What constraints were imposed by the client?
o What resolutions were made?
2. Decomposition

 A technique used to master complexity (“divide and conquer”)


 Functional decomposition
 Object-oriented decomposition

3. Hierarchy

 We got abstractions and decomposition


o This leads us to chunks (classes, objects) which we view with object model
 Another way to deal with complexity is to provide simple relationships between the
chunks
 One of the most important relationships is hierarchy

 Software Classification

It is possible to classify the software into a number of classes according to development


and design.

 Ready commercial products

Produced to be sold to many different customers (Commercial Off The Shelf - COTS)

 Special Software

They are products prepared according to the needs of a single customer.

 System Software
It is the software that installs every time the computer is turned on and makes the computer
ready for use. The BIOS program on PCs does this task. This program is loaded into RAM
when the computer is started and remains in memory until it is turned off.

 Application Software

Usually, they are all programs outside of the system software. These softwares are programs
written to solve a certain problem using appropriate data processing techniques. Unlike
system and support software, it is written for a uniform application. For example; Microsoft
Excel, Microsoft Word, etc.

 Support Software

They are general-purpose computer programs that are not specific to any application and
allow certain commands to be performed. Sorting, copying, formatting, etc. like software that
handles transactions.

REFERENCES

1. Yazılım Mühendisliği Ders Notları; Yrd.Doç.Dr. Buket Doğan.


2. Yazılım Mühendisliği; Ali Arifoğlu, Ali Doğru.
3. BBS-651 Yazılım Mühendisliği Ders Notu; A. Tarhan,2010
4. Yazılım Mühendisliği Yöntemleri İleri Konular, Dr. Çağatay Çatal, 2012.
5. Naur and Randell, 1969.
6. IEEE, 1990
7. Yazılım Mühendisliği Temelleri; Dr. M. Erhan Sarıdoğan
8. Software Engıneerıng Lecture Notes, Benjamin Sommer
9. Object- Oriented Software Engineering Using UML, Patterns, and Java , Bernd
Bruegge & Allen H. Dutoit

You might also like