SOFTWARE ENGINEERING
CSC 403
(4 Units: C)
MO ALIMI AND RA IBRAHIM
FACULTY OF COMPUTING
AFIT, KADUNA
2022/2023 SESSION
, 2
………..
………..
………..
Importance of Software
Computer software has become a driving force.
1. It is the engine that drives business decision making.
2. It serves as the basis for modern scientific investigation and engineering problem-solving.
3. It is embedded in all kinds of systems, such as transportation, medical,
telecommunications, military, industrial processes, entertainment, office products, etc.
4. It is important as it affects nearly every aspect of our lives and has become pervasive in
our commerce, our culture, and our everyday activities. Software’s impact on our society
and culture is significant.
As software importance grows, the software community continually attempts to develop
technologies that will make it easier, faster, and less expensive to build high-quality computer
programs.
CLASSES OF SOFTWARE
Software is classified into the following two classes:
1. Generic Software. Generic software is designed for a broad customer market whose
requirements are very common, fairly stable, and well-understood by the software engineer.
These products are sold in the open market, and there could be several competitive products on
the market. Database products, browsers, ERP/CRM and CAD/CAM packages, OS and system
software are examples of generic software.
2. Customized Software. Customized products are those that are developed for a customer
where domain, environment, and requirements are unique to that customer and cannot be
satisfied by generic products. Legacy systems, software written for specific business processes
that are typical of the specific industry, are used when a customized software product is needed.
Process-control systems, traffic-management systems, hospital-management systems, and
manufacturing-process control systems require customized software.
, 3
The developer manages a generic product and the customer manages a customized product. In
other words, requirements and specifications of a generic product are controlled by the
developer, whereas in the case of a customized product, these are controlled by the customer and
influenced by the practices of that industry.
Software life Cycle:
Problem Definition – Analysis – Algorithm – Coding – Testing and debugging – Documentation
OR Specification – Analysis – Design – Coding – Testing – Documentation.
Software Engineering Requirement Analysis
After being successful in the feasibility study, the requirement analysis is carried out.
Requirement Analysis and Specification phase exactly tells the requirements and needs of the
project. This is a very important and critical phase in the waterfall model and other software
development processes or methodologies. The purpose of a requirements analysis is to identify
the qualities required of the application, in terms of functionality, performance, ease of use,
portability, and so on.
Requirements set constraints and goals in the design and objective space of any software. It
helps set constraints and defines the boundaries of the design space and objective space.
Software Requirements
The requirements for a system are the descriptions of the services provided by the system and its
operational constraints. These requirements reflect the needs of customers for a system that
helps solve some problem such as controlling a device, placing an order or finding information.
The process of finding out, analyzing, documenting and checking these services and constraints
is called Requirements Engineering.
Types of Requirements
User requirements are statements, in a natural language plus diagrams, of what services the
system is expected to provide and the constraints under which it must operate.
, 4
System requirements set out the system’s functions, services and operational constraints in
detail. The system requirements document (functional specification) should be precise.
Functional Requirements: These are statements of services the system should provide, how the
system should react to particular inputs and how the system should behave in particular
situations. In some cases, the functional requirements may also explicitly state what the system
should not do. e.g. The user shall be able to search either all of the initial set of databases or
select a subset from it, The system shall provide appropriate viewers for the users, etc.
Non-functional requirements: These are constraints on the services or functions offered by the
system. They include timing constraints, constraints on the development process and standards.
Non-functional requirements often apply to the system as a whole. They do not usually apply to
individual system features or services. e.g. security, reliability, ethical, delivery, usability, etc.
In addition to the basic ones listed above, we also have the following requirements.
1. Performance Requirements
2. Constraints Requirements
3. Interface requirements
4. Environmental Requirements
5. Human factor Requirements etc.
Technical Requirements under requirement analysis define process, system design procedure,
technical management processes and product.
The purposes of technical requirements are to:
i. Transform the base-lined stakeholders’ expectations (input) into unique, quantitative
and measurable technical requirements (output).
ii. Define solutions,
iii. Establish the basis for agreement between the stakeholders and the developers on
what the software product is to do.
iv. Provide baseline for verification