Software engineering
Division of computer science, which applies well defined engineering concepts that are essential for
production of good (efficient, durable, scalable, in-budget and on-time) software products.
What makes a good software?
(a) Operational-(how well it works)
And is measure by
i. Budget: the higher the price the lesser the possibility of use.
ii. Usability: how easy is the system to use, which is dependent on the system s’ technical
components, operators, and operating environment.
iii. Efficiency: its capacity to totally and accurately permit users to attain their goals considering
resources available (Visible and easy to use). Efficiency includes its capability to attach
files/items, edit text, use instant recording of voice/video, provision of backup facilities, properly
receive and make calls, and provisions of video conference facilities etc. Other capabilities
include navigational links, shortcut, and escape hatches
iv. Correctness: If covers all the requirements expected from the system (as prescribed by the
software requirements specification ).
v. Functionality: use to use e.g. Functionally related controls should be placed together, Too
small or very close buttons/controls are difficult to manoeuvre
vi. Dependability: the quality of being reliable and trustworthy.
vii. Security: make sure that unauthorised use/entry is restricted (by e.g. management of
authentication and password, authorization and role, audit logging and analysis, encryption).
viii.Safety: users should be safeguarded from possibilities of danger e.g. Novice users should feel
safe in using the computer through the provisions of ‘safety nets’ such as undo, redo, delete,
backspace, and confirmation features whilst an experienced user should be able to
activate/deactivate them for convenience.
(b) Transitional (change of software from one platform/hardware (e.g. from dell to Macintosh,
mercer; operating system such as windows to Linux) to another)
Measured by
i. Portability - how easily it is to be moved/used from one platform/hardware to another.
ii. Interoperability- ability to work/communicate together, exchange data, and use information
that has been exchanged
iii. Reusability - use of existing asset (code, software components, test suites, designs and
documentation)
iv. Adaptability- gives a user the ability to adjust the output/input or tolerance without external
intervention.
v. Modularity- extent for division into smaller module
(c) Maintenance
Maintainability capabilities to sustain itself in the everchanging environment
i. Scalability- ability to grow/shrink so as manage and increased demand
ii. Flexibility: various ways of information interchange between the system and the user . it
encompasses
iii. (Dialog initiative: Whenever possible, a user should be given power to initialize an interaction
(user pre-emptive) than giving it to a computer (system pre-emptive) so as to impose certain
restrictions to the system.
iv. Multi-threading: The computer should be able to support multiuser/modality (e.g. concurrent or
interleaved, multiple in/output channels such as error warning signs with a message and
sound) interactions at time.
v. Task migratability: User’s task/computer’s task execution power should be possible to be
passed/exchanged to other scenarios.
vi. Substitutivity: Equivalent/alternate input/output values (e.g. cm or inches) or actions should be
replaced/alternated by each other wherever necessary.
vii. Customisability: A user interface should be modified by a user or the computer (adaptivity,
adaptability).
What is Incremental Model?
Incremental Model is SDLC where requirements to be met are fragmented into various standalone
modules of the development process (cycle). This type of SDLC is implemented in stages of analysis
design, implementation, testing/verification, maintenance, which then produces the first results
(increment1). The same process is iterated/repeated to produce second results (increment2) etc until
all intended functionalities are implemented.
In other words, Incremental Model SDLC permits an initial basic working system to be delivered to a
customer then other consecutive iterations/versions are executed and given to a customer for testing
until the anticipated system is obtained.
66sting Principles Software Testing
Characteristics of an Incremental module includes
The development of the System is fragmented into numerous small developmental projects; where
(1) Incomplete systems are sequentially made to create an ultimate total system; (2) a requirement
with a highest priority is attempted first; (3) necessity for an increment is frozen as soon as the
requirement is settled/completed.
Incremental Activities performed in incremental phases
Phases
Requirement All possible requirements (needs to be designed, its function and purpose etc) of
Analysis the system to be developed are captured in this phase and documented in a
requirement specification document.
Activities undertaken during requirements gathering, analysis and
specification
Requirements gathering
Gather all pertinent customer data to be used in development of the product so as
make sure that inconsistencies and incompleteness are removed.
Requirements analysis
End users, customers of the product to be developed are consulted through
interviews and or discussions to remove ambiguities, inconsistencies,
contradictions and make sure that requirements are accurately understood.
Requirements specification
Requirements of user and customer are methodically organized into a Software
Requirements Specification (SRS) document where functional, non-functional
requirements, and goals of implementation are specified
Design Is used to specify hardware/system requirements and in the definition of the overall
system architecture.
Activities undertaken during design:
Approaches used can be: (1) Traditional design and object-oriented design
approach; (2) logical and physical design
Code The system is initial developed in small programs (units). Unit Testing is also done
to test the units’ functionality.
Activities undertaken during coding and unit testing
a set of individual separate program modules that have been individually tested are
produced.
different modules are integrated once they have been coded and unit tested
Test A system functional and non-functional testing (alpha, beta and acceptance) is
carried out when all the modules have been successfully integrated and tested.
Deployment of – a final product is installed/given to a customer.
system
When to use Incremental models?
Incremental models is applicable when/where: (1) System’s requirements are known
upfront/unambiguously understood; (2) there is a demand/agency to publish/produce the artefact
early; (3) dealing with unskilled/semi-skilled software engineering (SE) team; (4) dealing with
goals/high-risk features; (5) dealing with product based companies or web application; () there is new
technology.
Advantages and Disadvantages of Incremental Model
Advantages Disadvantages
Quick generation of software during the software life cycle Necessitates a decent planning and designing
Is accommodative and is less expensive to change Each repetition phase is inflexible (does not overlap each
requirements and scope other)
Changes can be done throughout the development stages Time consuming. Correcting a problem in one division
entails the correction of all the parts
Cheap (initial delivery cost) Total cost may not be lower.
A consumer can react to each building
Easy identification of errors.