Software Engineering Notes - UNIT I
Software Engineering Notes - UNIT I
Unit 1
Software:
a) Instructions (Computer Programs) that when executed provide desired
features, function, and performance.
b) Data structures that enable the programs to adequately manipulate
information.
c) Documents that describe the operation and use of the programs.
Terms:
Programmer:
Denote an individual who is concerned with details of implementing, packaging
and modifying algorithms, data structures, returning programming languages.
Software Engineers:
Concern with the issues of
1. Analysis
2. Design
3. Verification &Testing
4. Documentations
5. Software maintenance
6. Project Management
Computer Software:
It includes the Source code and all the associated documents and
documentation that constitute the software product.
Components of Software products
1. Requirements Documents
2. Design specification
3. Source code
4. Test Plans
5. Principles of Operation
6. Quality assurance procedure
7. Software problem reports
8. maintenance procedures
9. Users manual
10. Installation Instruction
11. Training Aids.
Documentation:
Developer:
Developer or Software Engineer is used interchangeable.
Customer:
An individual or organization.
Software Reliability:
The ability of a program to perform a required function and their stated
conditions for a stated period of time.
H / w S / W c o s t R a t io
150
% of cost
100
50
0
year
In 1960 the ratio was approximately 80% Hardware cost and 20%
Software cost.In 1980 the ratio was reversed. 80 % for software cost and 20% for
Hardware cost.
The reason is the transistors; Intetpreter circuits have resulted in
dramatic decreases in Hardware cost.
Distribution of Effort:
Life cycle of Software
1. Analyze & Design
2. Implement
3. Test
4. Adapt
5. Enhance
6. Fix
The life span of software products is one to 3 years for development 5
to 15 years for maintenance.
Software maintenance involves 3 activities. 1.
Enhancing the capability of the product.
2. Adapting the products to new processing environments
3.Correcting bugs.
Distribution of Maintenance:
Enhanc
e
40
35
30
25
20
Analyze
Test
15
Adap
Fi
x
Implem
10
5
0
1. Enhancement60%
2. Adaptation20%
3.Correction ---20%
Distribution of effort for development phase 1.Analysis &
Design40% 2.Implementation, Debugging, unit testing
2 0% 3.Integration & Acceptance testing40%
From observations,
Software maintenance activities consumed more resources than
software development activities.
A large percentage of total effort is devoted to software enhancement. Testing
requires half the effort during software development. Activities of system
testing, enhancement, adaptation consumed the of total life cycle effort.
g) Work in groups.
Hence adequate of training is required for entry-level programmers.
14) Management Skills: - As the concept of SE is new hence the managers who work in
traditional styles are unable to properly manage the SE activities. Also it is seen that during
giving promotions if the competency of the candidate is only measured in the technical point of
view then there may arise the same kind of problem. So the management skills in a candidate
should also include technical and managerial
Competency.
15) Appropriate goals: - Setting of appropriate goals is a major contributing factor in
successful execution of a project. Generally the most common goals include
a) Generality,
b) Efficiency and
c) Reliability.
High productivity and quality factors can be achieved by adhering to the goals and
requirements established for the software during
Project planning.
16) Rising expectations: - Progress is constantly being made in the development of tools
and techniques to improve software quality and programmer productivity, equally diversity, size
and complexity of software applications are growing at a fast rate but also the expectations and
increasing demands. Hence its necessary to adhere to the latest that is happening.
17) Stability of requirements: - The requirements of a software project includes
a) Manpower,
b) Software and
c) Hardware.
The requirements definition is done during problem analysis phase where the amount and
type of resources are predicted. In this point if the analysis and prediction is not based on facts,
expert guidance and experience from previous projects, then the requirements would change
throughout the development process and may extend to maintenance phase. Un-stability of
requirements increases the cost, degrades overall quality and reduces the productivity. Hence
great care should be taken during the initial phase of problem identification & problem analysis.
Other factors: - There are several other factors that influence the productivity
a) Familiarity to the programming environment,
b) Amount and type of access to the computing system,
c) Stability of the computing system,
d) Memory & timing constrains,
e) Experience in that particular area of interest,
f) Data-base size etc.
Managerial Issues :
Ideal or expected activities of Managers in a firm
1. Managers should control the resources and the environment in which technical
activities occurs.
2. They also have ultimate responsibility for ensuring that software products are delivered
on time and within cost estimates.
3. They have the responsibility of ensuring that the software products exhibit the
functional and quality attributes desired by the
Customer.
4. The managers are responsible for project management which includes methods for
organizing and monitoring the project progress.
5. Organizing and monitoring a project includes
a) Cost estimation,
b) Resource allocation policies,
d) Budgetary control,
e) Setting project milestones,
f) Making schedule adjustments,
g) Establishing quality assurance procedures,
h) Establishing effective communication between project members,
i) Customer communications,
j) Development of contractual agreements with customers taking in to view legal
obligations and responsibilities.
Requirement:
They include
a) Functional aspects,
b) Performance aspects,
c) Hardware aspects,
d) Software aspects,
e) User interface, etc.
They also specify development standards and quality assurance standards for both
project process and product.
Special efforts should be made in the process of developing meaningful requirement
statements and methods that will be used to verify those statements.
During goal determination and requirement analysis the quality attributes of the software
has to be taken in to consideration. According to IEEE standards following are the desired
quality attributes of a software product:1) Portability ,
2) Reliability,
3) Efficiency,
4) Accuracy,
5) Error,
6) Robustness,
7) Correctness.
(ii) Developing a Solution Strategy
1) A solution strategy is not a detailed solution plan. Its a general statement of solution
concerning the nature of possible solutions.
2) A solution strategy should account for all external factors that are visible to the
product users.
3) A strategy should be phrased to permit alternative approaches to product design.
4) Several strategies should be considered before one is adopted.
5) Solution strategies should be generated without regard for feasibility because its not
possible to be both creative & critical at the same time.
6) Often the best strategy is composite of ideas from several different approaches. And
the best solution strategies may become apparent only after all the obvious solutions have been
enumerated.
7) The feasibility of each proposed solution strategy can be established by examining
solution constraints. Constraints prescribe the boundaries of the solution space.
8) A solution strategy is feasible if the project goals and requirements can be satisfied
with in the constraints of available time, resources and technology using that strategy.
9) When recommending a solution strategy its extremely important to document the
reasons for rejecting other strategies, this provides justification for the recommended strategy
and may prevent ill-considered revisions at some later date.
A solution strategy should include a priority list of product features. There are several
important reasons for stating product priorities. At some later time in the development cycle it
may be necessary to postpone or eliminate some system capabilities due to inconsistencies in the
requirements, technical bottlenecks or time and cost overruns.
It is a simplest model, which states that the phases are organized in a linear order.
It is widely known
Analysis Phase:
Planning The main aim of the feasibility study activity is to determine whether it would be
financially and technically feasible to develop the product.
The feasibility study activity involves the analysis of the problem and collection of all
relevant information relating to the product such as the different data items which would be
input to the system, the processing required to be carried out on these data, the output data
required to be produced by the system as well as various constraints on the behavior of the
system.
Requirement The aim of the requirement analysis is to understand the exact requirements of
the customer and to document them properly. The requirement analysis activity is begun by
collecting all relevant data regarding the product to be developed from the users of the product
and from the customer through interviews and discussions.
During this activity, the user requirements are systematically organized into a software
requirement specification (SRS) document.
The important components of this document are the functional requirements, the
nonfunctional requirements, and the goals of implementation. The SRS document is written in
end-user terminology. This makes the SRS document understandable by the customer. After all,
it is important that the SRS document be reviewed and approved by the customer.
Design Phase:
This phase is concerned with
Identifying software components like functions, data streams and data stores.
Specifying software structure.
Maintaining a record of design decisions and providing blue prints for the
implementation phase
The are two categories of Design
a) Architectural Design It involves
Identifying the software components.
Decoupling and decomposing the software components into modules and
conceptual data structures.
Specifying the interconnection between the various components.
b) Detailed Design It is concerned with details of the implementation procedures to
process the algorithms, data structures and
Interaction between the modules and data structures. The various activities that
this phase includes are
Adaptation of existing code.
Modification of existing algorithms.
Design of data representation and
Packaging of the software product.
This process is highly influenced by the programming language under the
implementation would be carried out. This stage is different from implementation.
Implement Phase:
Testing Phase:
It involves two kinds of activities
1. Integration Testing It involves testing of integrating various modules and testing
there overall performance due to their Integration.
2. Acceptance Testing It involves planning and execution of various types of tests in
order to demonstrate that the implemented software system satisfies the requirements stated in
the requirements document.
Maintenance Phase:
In this phase the activities include
* Corrective Maintenance Correcting errors that were not discovered during the product
development phase.
* Perfective Maintenance Improving the implementation of the system, and enhancing
the functionalities of the system according to customers requirements.
* Adaptive Maintenance Adaptation of software to new processing environments.
Another view of the software lifecycle g software importance to the milestones, documents and
reviews.
Ask the software products evolves through the development phase it is difficult for themanager
and team members to determine resources extended to predict schedule delays extra.
Establishing milestones, reviews points, documents and management sign offs can improve
project visibility.
The development process becomes more public activity and tangible.
This result is improved
Product quality
Increased programmer productivity.
Better moralae among team members.
Is held to evaluate of adequacy of the architectural design insatisfying the SPS(software Product
specification)
Another reviews may be required to resolve problems under format sign offs is required of the
project manager.
To verify that the design is complete and consistent with respect to the requirements.
To verify that the source code is complete and consistent with respect to the requirements and
design specification.
Debug.
Unit tested.
Standard parcties in the following area
Logical structure
Coading style
Data layout
Comments
Debugging
Unit testing
This is to ensure that all the code has been reviewed by atleast one person other than programmer.
Inspection are conducted during product evaluation to verify the completeness, consistency and
suitability of the work products.
The users manual the installations and training plans and the software maintenance plans are
completed during the implementation phase.
A final acceptance review is performed prior to product delivery.
Software verification summary is prepared.
It describes the results of all the reviews, audits,inspection and test throughout the development
cycle.
The
legancy
summarises
the
project
a record of what went well and what went wrong during the project.
and
This model is used specify the cost of performing various activities in a Software
Project.
provides
The cost of conducting a Software project is the sum of the cost involved in conducting
each phase of the project.
The cost involved each phase includes:
The cost of performing the process
Preparing the products of the phase.
Plus the cost of verifying the product of the present phase is complete and consistent with the
previous phase.
Cost of producing system definition and project plan =performing planning functions and
preparing documents+ cost of verifying the system definition and project plan.
Cost of SRS= Cost of requirements definition and document + Cost of modifying system
definition and project plan + Cost of verifying SRS is complete and consistence.
Cost of design= Cost of preparing design specification and test plan+ Cost of modifying and
correcting the system definition, project, SRS(Software requirement specification)+cost of
verifying design.
Cost of product implementation= Cost of implementing documenting, debugging and unit
testing of source code+ Cost of users manual, verification plan, maintenance procedure,
initialization and training instructions+ Cost of modifying and correcting system definition,
project plan,SRS, design specification, verification plan+the Cost of verifying the
implementation is complete and consistent.
Cost of system test= Cost of planning and conducting the test+ Cost of modifying and
correcting the source code+ Cost of verifying the test.
Cost of maintenance Software= Cost of performing product enhancement +making adaptation
to new processing requirements and fixing bugs.
Important reason:
It illustrates input data formats, messages, reports and interactive dialogues for the customer.
To explore technical problems in the proposed system.
In situations where phased model of analysis, design, implementation is not appropriate.
External customers
Internal product needs
Conducts feasibility study.
design
implements
debugs
test and integrate the product
Users manual
Initialization instruction
Principles of operation
Supporting documents
Support task:
(i)
Error connection
Enhancement
Project Structure:
(a)Project format
(b)Functional format:
In this approach a different team of programmers perform each phase of the Project
The work products pass from team to team as they evolved
Functional format involves 3 teams
1. An analysis team.
2. A design team and implementation team.
3. Test formatting and maintenance team.
(c)Matrix format
In this format each of the functions has its own management team.
This format involves a group of specialist personnel concerned only with that function.
Each development project has a project manager concerned only with that Project
The Project manager generates and reviews documents.
Each functional group participate in each Project
Ex: software development team members belongs to the development function similarly testing
belong the testing function.
Disadvantages: