CSC 4219 ST in Software Engineering-1
CSC 4219 ST in Software Engineering-1
CSC 4219 ST in Software Engineering-1
CSC 4219
(SPECIAL TOPICS IN SOFTWARE ENGINEERING)
COURSE OUTLINE
©2023
2|Page
DEFINITIONS
(2) The study of approaches as in the above statement. Fritz Bauer, a German computer
scientist, defines software engineering as: “Software engineering is the establishment and use
of sound engineering principles in order to obtain economically software that is reliable and
work efficiently on real machines.
3|Page
Software Evolution
The process of developing a software product using software engineering principles and
methods is referred to as Software Evolution. This includes the initial development of software
and its maintenance and updates, till desired software product is developed, which satisfies
the expected requirements.
Evolution starts from the requirement gathering process. After which developers create a
prototype of the intended software and show it to the users to get their feedback at the early
stage of the software product development. The users suggest changes, on which several
consecutive updates and maintenance keep on changing too. This process changes to the
original software, till the desired software is accomplished. Even after the user has the desired
software in hand, the advancing technology and the changing requirements force the software
product to change accordingly. Re-creating software from scratch and to go one-on-one with
the requirement is not feasible. The only feasible and economical solution is to update the
existing software so that it matches the latest requirements.
Software Evolution Laws
Lehman has given laws for software evolution. He divided the software into three different
categories:
This is defined by exactly what procedures can do. In this software, the specifications can be
described but the solution is not obviously instant. For example, gaming software.
3. Embedded-type (E-type) - This software works closely as the requirement of real-world
environment. This software has a high degree of evolution as there are various changes in
laws, taxes etc. in the real world situations. For example, Online trading software.
E-Type software evolution
1. Continuing Change - An E-type software system must continue to adapt to the real world
changes, else it becomes progressively less useful.
3. Conservation of familiarity - The familiarity with the software or the knowledge about how
it was developed, why was it developed in that particular manner etc., must be retained at any
cost, to implement the changes in the system. 4. Continuing growth- In order for an E-type
system intended to resolve some business problem, its size of implementing the changes
grows according to the lifestyle changes of the business.
6. Feedback systems- The E-type software systems constitute multi-loop, multi-level feedback
systems and must be treated as such to be successfully modified or improved. 7. Self-
regulation - E-type system evolution processes are self-regulating with the distribution of
product and process measures close to normal.
8. Organizational stability - The average effective global activity rate in an evolving E-type
system is invariant over the lifetime of the product.
Need of Software Engineering
The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working. Following are some of the
needs stated:
5|Page
Large software- It is easier to build a wall than a house or building, likewise, as the size of
the software becomes large, engineering has to step to give it a scientific process.
Scalability- If the software process were not based on scientific and engineering concepts, it
would be easier to re-create new software than to scale an existing one.
Cost- As hardware industry has shown its skills and huge manufacturing has lower down the
price of computer and electronic hardware. But, cost of the software remains high if proper
process is not adapted.
Dynamic Nature- Always growing and adapting nature of the software hugely depends upon
the environment in which the user works. If the nature of software is always changing, new
enhancements need to be done in the existing one. This is where the software engineering
plays a good role.
Quality Management- Better process of software development provides better and quality
software product
Transitional
Maintenance
Operational
This tells us how well the software works in operations. It can be measured on:
Budget Functionality
Usability Dependability
Efficiency Security
Correctness Safety
6|Page
Transitional
This aspect is important when the software is moved from one platform to another:
Portability Reusability
Interoperability Adaptability
Maintenance
This aspect briefs about how well the software has the capabilities to maintain itself in the ever-
changing environment:
Modularity Flexibility
Maintainability Scalability
In short, Software engineering is a branch of computer science, which uses well defined
engineering concepts required to produce efficient, durable, scalable, in budget, and on-time
software products.
Software Project
A Software Project is the complete procedure of software development from requirement
gathering to testing and maintenance, carried out according to the execution methodologies,
in a specified period of time to achieve intended software product.
The image above shows triple constraints for software projects. It is an essential part of
software organization to deliver quality product, keeping the cost within client’s budget
constrain and deliver the project as per scheduled. There are several factors, both internal and
external, which may impact this triple constrain triangle. Any of the three factors can severely
impact the other two. Therefore, software project management is essential to incorporate
user requirements along with budget and time constraints.
Software Project Manager
A software project manager is a person who undertakes the responsibility of executing the
software project. Software project manager is thoroughly aware of all the phases of SDLC that
the software would go through. The project manager may never directly involve in producing
the end product but he controls and manages the activities involved in production. A project
8|Page
manager closely monitors the development process, prepares and executes various plans,
arranges necessary and adequate resources, maintains communication among all team
members in order to address issues of cost, budget, resources, time, quality and customer
satisfaction.
Let us see few responsibilities that a project manager shoulders –
Managing People
Act as project leader
Lesion with stakeholders
Managing human resources
Setting up reporting hierarchy etc
Managing Project
Defining and setting up project scope
Managing project management activities
Monitoring progress and performance
Risk analysis at every phase
Take necessary step to avoid or come out of problems
Act as project spokesperson
Scope Management
It defines scope of the project; this includes all the activities, process need to be done in order
to make a deliverable software product. Scope management is essential because it creates
boundaries of the project by clearly defining what would be done in the project and what
would not be done. This makes project to contain limited and quantifiable tasks, which can
easily be documented and in turn avoids cost and time overrun.
During Project Scope management, it is necessary to –
Define the scope
Decide its verification and control
Divide the project into various smaller parts for ease of management
Verify the scope
Control the scope by incorporating changes to the scope
Project Estimation
For an effective management, accurate estimation of various measures is a must. With the
correct estimation, managers can manage and control the project more efficiently and
effectively. Project estimation may involve the following:
Software size estimation
Software size may be estimated either in terms of KLOC (Kilo Line of Code) or by calculating
number of function points in the software. Lines of code depend upon coding practices.
Function points vary according to the user or software requirement.
Effort estimation
The manager estimates efforts in terms of personnel requirement and man-hour required to
produce the software. For effort estimation software size should be known. This can either be
derived by manager’s experience, historical data of organization, or software size can be
converted into efforts by using some standard formulae.
Time estimation
once size and efforts are estimated, the time required to produce the software can be
estimated. Efforts required are segregated into sub categories as per the requirement
specifications and interdependency of various components of software. Software tasks are
divided into smaller tasks, activities or events by Work Breakthrough Structure (WBS). The
tasks are scheduled on day-to-day basis or in calendar months.
10 | P a g e
The sum of time required to complete all tasks in hours or days is the total time invested to
complete the project.
Cost estimation
This might be considered as the most difficult of all because it depends on more elements
than any of the previous ones. For estimating project cost, it is required to consider –
Size of the software Travel involved
Software quality Communication
Hardware Training and support
Additional software or tools, licenses etc. Skilled personnel with task-specific skills
Configuration Management
Configuration management is a process of tracking and controlling the changes in software in
terms of the requirements, design, functions and development of the product.
IEEE defines it as “the process of identifying and defining the items in the system, controlling
the change of these items throughout their life cycle, recording and reporting the status of
items and change requests, and verifying the completeness and correctness of items”.
Generally, once the SRS is finalized there is less chance of requirement of changes from user. If
they occur, the changes are addressed only with prior approval of higher management, as
there is a possibility of cost and time overrun.
Baseline
A phase of SDLC is assumed over if it baselined, i.e. baseline is a measurement that defines
completeness of a phase. A phase is baselined when all activities pertaining to it are finished
and well documented. If it was not the final phase, its output would be used in next
immediate phase. Configuration management is a discipline of organization administration,
which takes care of occurrence of any changes (process, requirement, technological,
strategical etc.) after a phase is baselined. CM keeps check on any changes done in software.
Change Control
Change control is function of configuration management, which ensures that all changes made
to software system are consistent and made as per organizational rules and regulations.
A change in the configuration of product goes through following steps –
Identification - A change request arrives from either internal or external source. When
change request is identified formally, it is properly documented.
Validation - Validity of the change request is checked and its handling procedure is
confirmed.
Analysis - The impact of change request is analyzed in terms of schedule, cost and required
efforts. Overall impact of the prospective change on system is analyzed.
Control - If the prospective change either impacts too many entities in the system or it is
unavoidable, it is mandatory to take approval of high authorities before change is
incorporated into the system. It is decided if the change is worth incorporation or not. If it is
not, change request is refused formally.
12 | P a g e
Execution - If the previous phase determines to execute the change request, this phase takes
appropriate actions to execute the change, through a thorough revision if necessary.
Close request - The change is verified for correct implementation and merging with the rest
of the system. This newly incorporated change in the software is documented properly and
the request is formally closed.
The software requirements are description of features and functionalities of the target
system. Requirements convey the expectations of users from the software product. The
requirements can be obvious or hidden, known or unknown, expected or unexpected from
client’s point of view.
Requirement Engineering
The process to gather the software requirements from client, analyze, and document them is
known as requirement engineering.
The goal of requirement engineering is to develop and maintain sophisticated and descriptive
‘System Requirements Specification’ document.
Requirement Engineering Process
It is a four step process, which includes –
Feasibility Study
Requirement Gathering
Software Requirement Specification
Software Requirement Validation
Let us see the process briefly –
Feasibility study
When the client approaches the organization for getting the desired product developed, it
comes up with a rough idea about what all functions the software must perform and which all
features are expected from the software. Referencing to this information, the analysts do a
detailed study about whether the desired system and its functionality are feasible to develop.
This feasibility study is focused towards goal of the organization. This study analyzes whether
13 | P a g e
Requirements gathering - The developers discuss with the client and end users and know
their expectations from the software.
Organizing Requirements - The developers prioritize and arrange the requirements in order
of importance, urgency and convenience.
Negotiation & discussion - If requirements are ambiguous or there are some conflicts in
requirements of various stakeholders, it is then negotiated and discussed with the
stakeholders. Requirements may then be prioritized and reasonably compromised. The
requirements come from various stakeholders. To remove the ambiguity and conflicts, they
are discussed for clarity and correctness. Unrealistic requirements are compromised
reasonably.
Documentation - All formal and informal, functional and non-functional requirements are
documented and made available for next phase processing.
Requirement Elicitation Techniques
Requirements Elicitation is the process to find out the requirements for an intended software
system by communicating with client, end users, system users, and others who have a stake in
the software system development. There are various ways to discover requirements. Some of
them are explained below:
1. Interviews
Interviews are strong medium to collect requirements. Organization may conduct several
types of interviews such as:
15 | P a g e
requirements. The prototype is shown to the client and the feedback is noted. The client
feedback serves as an input for requirement gathering.
8. Observation
Teams of experts visit the client’s organization or workplace. They observe the actual working
of the existing installed systems. They observe the workflow at the client’s end and how
execution problems are dealt. The team itself draws some conclusions which aid to form
requirements expected from the software.
Software Requirements Characteristics
Gathering software requirements is the foundation of the entire software development
project. Hence they must be clear, correct, and well-defined. A complete Software
Requirement Specifications must be:
Clear Modifiable
Correct Verifiable
Consistent Prioritized
Coherent Unambiguous
Comprehensible Traceable
Credible source
Software Requirements We should try to understand what sort of requirements may arise in
the requirement elicitation phase and what kinds of requirement are expected from the
software system.
Broadly software requirements should be categorized in two categories:
Functional Requirements
Requirements, which are related to functional aspect of software fall into this category. They
define functions and functionality within and from the software system.
EXAMPLES –
Search option given to user to search from various invoices.
User should be able to mail any report to management.
Users can be divided into groups and groups can be given separate rights.
Should comply business rules and administrative functions.
Software is developed keeping downward compatibility intact.
17 | P a g e
Non-Functional Requirements
Requirements, which are not related to functional aspect of software, fall into this category.
They are implicit or expected characteristics of software, which users make assumption of.
Non-functional requirements include –
Security Cost
Logging Interoperability
Storage Flexibility
Configuration Disaster recovery
Performance Accessibility
Requirements are categorized logically as:
Must Have: Software cannot be said operational without them.
Should have: Enhancing the functionality of software.
Could have: Software can still properly function with these requirements.
Wish list : These requirements do not map to any objectives of software.
While developing software, ‘Must have’ must be implemented, ‘Should have’ is a matter of
debate with stakeholders and negation, whereas ‘Could have’ and ‘Wish list’ can be kept for
software updates.
Advantages of SaaS
1) SaaS is easy to buy
SaaS pricing is based on a monthly fee or annual fee subscription, so it allows organizations to
access business functionality at a low cost, which is less than licensed applications.
Unlike traditional software, which is sold as a licensed based with an up-front cost (and often
an optional ongoing support fee), SaaS providers are generally pricing the applications using a
subscription fee, most commonly a monthly or annually fee.
2. One to Many
SaaS services are offered as a one-to-many model means a single instance of the application is
shared by multiple users.
20 | P a g e
Software analysis and design includes all activities, which help the transformation of
requirement specification into implementation. Requirement specifications specify all
functional and non-functional expectations from the software. These requirement
specifications come in the shape of human readable and understandable documents, to which
a computer has nothing to do. Software analysis and design is the intermediate stage, which
helps human readable requirements to be transformed into actual code.
Let us see few analysis and design tools used by software designers:
Data Flow Diagram
Data Flow Diagram (DFD) is a graphical representation of flow of data in an information
system. It is capable of depicting incoming data flow, outgoing data flow, and stored data. The
DFD does not mention anything about how data flows through the system.
There is a prominent difference between DFD and Flowchart. The flowchart depicts flow of
control in program modules. DFDs depict flow of data in the system at various levels. It does
not contain any control or branch elements.
22 | P a g e
Types of DFD
Data Flow Diagrams are either Logical or Physical.
Logical DFD - This type of DFD concentrates on the system process, and flow of data in the
system. For example in a banking software system, how data is moved between different
entities.
Physical DFD - This type of DFD shows how the data flow is actually implemented in the
system. It is more specific and close to the implementation.
DFD Components
DFD can represent source, destination, storage, and flow of data using the following set of
components –
Entities - Entities are sources and destinations of information data. Entities are represented by
rectangles with their respective names.
Process - Activities and action taken on the data are represented by Circle or Round-edged
rectangles.
Data Storage - There are two variants of data storage - it can either be represented as a
rectangle with absence of both smaller sides or as an open-sided rectangle with only one side
missing.
Data Flow - Movement of data is shown by pointed arrows. Data movement is shown from
the base of arrow as its source towards head of the arrow as destination.
Levels of DFD
Level 0 - Highest abstraction level DFD is known as Level 0 DFD, which depicts the entire
information system as one diagram concealing all the underlying details. Level 0 DFDs are also
known as context level DFDs.
23 | P a g e
Level 1 - The Level 0 DFD is broken down into more specific, Level 1 DFD. Level 1 DFD
depicts basic modules in the system and flow of data among various modules. Level 1 DFD also
mentions basic processes and sources of information.
Level 2 - At this level, DFD shows how data flows inside the modules mentioned in
Level 1. Higher level DFDs can be transformed into more specific lower level DFDs with
deeper level of understanding unless the desired level of specification is achieved.
Structure Charts
Structure chart is a chart derived from Data Flow Diagram. It represents the system in more
detail than DFD. It breaks down the entire system into lowest functional modules, describes
functions and sub-functions of each module of the system to a greater detail than DFD.
Structure chart represents hierarchical structure of modules. At each layer a specific task is
performed.
Here are the symbols used in construction of structure charts –
24 | P a g e