Software-Engineering unit 1 imp (1)
Software-Engineering unit 1 imp (1)
II YEAR V SEMESTER
UNIT I
UNIT II
REQUIREMENTS ANALYSIS : Requirement Engineering Processes – Feasibility Study –
Problem of Requirements – Software Requirement Analysis – Analysis Concepts and
Principles – Analysis Process – Analysis Model
UNIT III
SOFTWARE DESIGN: Software design - Abstraction - Modularity - Software Architecture
- Effective modular design - Cohesion and Coupling - Architectural design and Procedural
design - Data flow oriented design.
UNIT IV
USER INTERFACE DESIGN AND REAL TIME SYSTEMS :User interface design -
Human factors - Human computer interaction - Human - Computer Interface design -
Interface design - Interface standards.
UNIT V
SOFTWARE QUALITY AND TESTING :Software Quality Assurance - Quality metrics -
Software Reliability - Software testing - Path testing – Control Structures testing - Black Box
testing - Integration, Validation and system testing - Reverse Engineering and Re-
engineering.
CASE tools –projects management, tools - analysis and design tools – programming tools -
integration and testing tool - Case studies.
Software:
Software is more than just a program code. A program is an executable code, which
serves some computational purpose. Software is considered to be collection of executable
programming code, associated libraries and documentations. Software, when made for a
specific requirement is called software product.
The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the application of engineering
to software.
Software Paradigms:
Requirement gathering
Software design
Programming
2. Software Design Paradigm: This paradigm is a part of Software Development and
includes
Design
Maintenance
Programming
3. Programming Paradigm: This paradigm is related closely to programming aspect of
software development. This includes
Coding
Testing
Integration
1.WHAT IS SOFTWARE ENGINEERING?
Software Engineering: The practices that follow while developing an automated application
(or)
The technology encompasses (include) a process, a set of methods and array of tools that we
call software engineering.
Characteristics of software:
2. “Does not wear out” that is can’t be produced instantly. ie s/w does not degrade with
time as hardware does.
3. Testing
4. Quality Assurance
5. Deployment
6. Feedback
7 Risk management
8) Measurement
Software Engineering: The practices that follow while developing an automated application.
Software development
Guides software engineer through a set of frame work activities
Models
Communication:
Requirement gathering:
Software engineer communicate with stack holder(client) to understand the
information domain(how to develop product) and formulates design specifications.
Effective communication between the software engineer and stack holder is needed.
Planing:
a. Estimating: Resources need for software development is to be estimated.
b. Several techniques(methods) are adopted to monitor progress against plan
1. Work Breakdown Structures ( WBS )
2. PERT ( Program Evaluation and Review Technique )
3. GANTT Chart
Modeling:
1. Aalysis
2.Design
Construction:
Testing: The process of verifying the application program for uncovered errors or
irregularities.
Deployment:
a. Delivery
b. Support
c. Feed back
a. Delivery: Dispatching product to customer for usage
All the requirements are known at the beginning of the project, hence it is easy to
manage.
It avoids overlapping of phases because each phase is completed at once.
This model works for small projects because the requirements are understood very
well.
This model is preferred for those projects where the quality is more important as
compared to the cost of the project.
This model is not good for complex and object oriented projects.
It is a poor model for long projects.
The problems with this model are uncovered, until the software testing.
The amount of risk is high
When to use the water fall model
This model is used only when the requirements are very well known, clear and fixed
Technology is understood , the project is short, there are no ambiguous requirements
2.INCREMENTAL MODEL
The incremental process model focuses on the delivery of an operational product with each
increment. Early increments are stripped-down versions of the final product, but they do
provide capability that serves the user and also provide a platform for evaluation by the user.
Objectives :
(a) Software development
(b) Guides software engineer through a set of frame work activities
Communication:
Requirement gathering:
Software engineer communicate with stack holder to understand the information domain
and formulates design specifications.
Effective communication between the software engineer and stack holder is need to
formulate better requirements.
Planning:
Modeling:
Construction:
Testing: The process of verifying the application program for uncovered errors or
irregularities.
a. Delivery
b. Support
c. Feed back
a. Delivery: Dispatching product to customer for usage
c. Feedback: Details given by end user.Feedback from end users can be collected
using
Interviews
Questionnaires
Onsite observations
Advantages:
1. Business modeling
2. Data modeling
3. Process modeling
4. Application generation
5. Testing & Turnover
Business modeling:
The information flow among business functions is modeled in a way that answers the
following questions.
Data modeling:
Process modeling:
Process description is created for (a) Retrieval of data (b) Deletion of data (c)
Addition of data (d) Modification of data
Application Generation:
Many of the components have already been tested. This reduces overall testing time.
The new components are tested and variety of test cases of exercised.
Limitations :
1. PROTOTYPING
The basic idea in Prototype model is that instead of freezing the requirements before a
design or coding can proceed, a throwaway prototype is built to understand the requirements.
This prototype is developed based on the currently known requirements. Prototype model is a
software development model. By using this prototype, the client can get an ―actual feel‖ of
the system, since the interactions with prototype can enable the client to better understand the
requirements of the desired system. Prototyping is an attractive idea for complicated and
large systems for which there is no manual process or existing system to help determining the
requirements.
Advantages of Prototype model:
1) It is used when the desired system needs to have a lot of interaction with the end
users.
2) Typically online system, web interfaces have a very high amount of interaction with
end users.
3) It is ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system.
Effectiveness: The working program must satisfy the needs of the user.
Efficient: The working program must use minimum resources to produce throughput.
Customer communication:
Software engineer communicate with stack holder to understand the information
domain and formulates design specifications.
Effective communication between the software engineer and stack holder is need to
formulate better requirements.
Planning:
Estimating: Resources need for software development is estimated.
Several techniques are adopted to monitor progress against plan
a. Work Breakdown Structures ( WBS )
b. PERT ( Program Evaluation and Review Technique )
c. GANTT Chart
Risk analysis:
Asses both technical risks and management risks.
Engineering:
Testing: The process of verifying the application program for uncovered errors or
irregularities.
Customer evaluation:
Feedback: Details given by end user.
Forexample, during early stages of design (a major software engineering action that occurs
during the modeling activity), an inconsistency in the requirements model isuncovered. This
generates the event analysis model correction, which will trigger the
requirements analysis action from the done state into the awaiting changes state.
Few software developers have the necessary background to apply formal methods.
Evolutionary in nature
Complex software includes (a) Localized features (b) Functions (c) Information
content
Features:
3.Distribution 4.Persistency
Types:
Inception
Elaboration
Construction
Transaction
2.PROJECT MANAGEMENT
Effective software project management focuses on the four P’s: people, product, process,
and project..
1) The People
The people management defines the following key practice areas for software people
RECRUITING
SELECTION
PERFORMANCE MANAGEMENT
TRAINING
COMPENSATION
CAREER DEVELOPMENT
ORGANIZATION AND WORK DESIGN
TEAM/CULTURE DEVELOPMENT.
The Players( Stack holders):
The software process (and every software project) is populated by players who can be
categorized into one of five constituencies:
1. Senior managers: who define the business issues that influence on the project.
2. Project (technical) managers :who must plan, motivate, organize, and control the
practitioners who do software work.
3. Practitioners who deliver the technical skills that are helps to develop a product or
application.
4. Customers who specify the requirements for the software to be engineered(developed)
5. End-users who interact with the software once it is released for Production use.
Team Leaders:
Organization. The ability to mold existing processes (or invent new ones) that
There are many reasons that software projects get into trouble.
Interoperability has become a key characteristic of many systems.
New software must communicate with existing software and conform to
predefined constraints imposed by the system or product.
To deal with them effectively, a software engineering team must establish
effective methods for coordinating the people who do the work.
Formal communicationis accomplished through ―writing, structured meetings, and
other relatively noninteractive and impersonal communication channels‖ .
product objectives
scope should be established,
alternative solutions should be considered,
technical and management constraintsshould be identified.
Without this information, it is impossible to estimates the cost.
Software Scope:
The first software project management activity is the determination of software scope.
Scope is defined by answering the following questions:
Context. How does the software to be built fit into a larger system, product, or
business context and what constraints are imposed as a result of the context?
Software functions, described in the statement of scope, are evaluated and refined to
provide more detail prior to the beginning of estimation
3) The Process
A software process provides the framework from which a comprehensive plan for
software development can be established..
The project manager must decide which process model is most appropriate for
(1)The customers who have requested the product and the people who will do the
work.
Process Decomposition
Once the process model has been chosen, the common process framework (CPF) is
adapted to it.
For example, a small,relatively simple project might require the following work tasks
4)The Project
In order to avoid project failure, a software project manager and the software
engineers who build the product must avoid a set of common warning signs that
lead to good project management.
In order to manage a successful software project, we must understand what can go
wrong and how to do it right.
In a software projects one defines ten signs that indicate that an information
systems project is in jeopardy:
1. Software people don’t understand their customer’s needs.
10. Managers [and practitioners] avoid best practices and lessons learned.
―you need an organizing principle that scales down to provide simple [project] plans
The answers to these questions help the team to establish a project schedule by
The role and responsibility of each member of the software team must be defined.
Not all roles and responsibilities reside within the software team itself. The customer,
Once productscope is established, a management and technical strategy for the project
mustbe defined.
earlier questions
Metrics
• They offer the effectiveness of the software process and the projects that are
conducted using the process as a framework.
• These data are analyzed, compared against past averages, and assessed
• Remedies can then be developed and the software process can be improved
• Process metrics are collected across all projects and over long periods of time.
– Use the metrics to provide indicators that will lead to a strategy for
improvement.
• Use common sense and organizational sensitivity when interpreting metrics data
• Provide regular feedback to the individuals and teams who collect measures and
metrics
• Work with practitioners and teams to set clear goals and metrics that will be used
to achieve them
• Many of the same metrics are used in both the process and project domain
– Metrics from past projects are used as a basis for estimating time and
effort
Project metrics can be consolidated to create process metrics for an organization by using
Size-oriented Metrics
• Thousand lines of code (KLOC) are often chosen as the normalization value
• Metrics include
• Size-oriented metrics are not universally accepted as the best way to measure the
software process
Function-oriented Metrics
Function point values on past projects can be used to compute, for example, the
average number of lines of code per function point (e.g., 60)
C++ 66 53 29 178
COBOL 77 77 14 400
Java 55 53 9 214
PL/1 78 67 22 263
Number of static Web pages the end-user has no control over the content displayed
on the page
Number of dynamic Web pages end-user actions result in customized content
displayed on the page
Number of internal page links (internal page links are pointers that provide a
hyperlink to some other Web page within the WebApp
Number of persistent data objects As the number of persistent data objects grows
the complexity of webapps also grows
Number of external systems interfaced As the requirement for interfacing grows,
system complexity and development effort also increases
Object-oriented Metrics
• Key classes are defined early in object-oriented analysis and are central to
the problem domain
• Estimation of the number of support classes can be made from the number
of key classes
• GUI applications have between two and three times more support classes
as key classes
• Non-GUI applications have between one and two times more support
classes as key classes
Number of subsystems
Correctness. A program must operate correctly or it provides little value to its users.
Correctness is the degree to which the software performs its required function.
Maintainability. Software maintenance and support accounts for more effort than any
other software engineering activity. Maintainability is the ease with which a program can
be corrected if an error is encountered, adapted if its environment changes, or enhanced if
the customer desires a change in requirements.
A simple time-oriented metric is mean-time-to-change (MTTC), the time it takes to
analyze the change request
Integrity. Software integrity has become increasingly important in the age of cyber
terrorists and hackers. This attribute measures a system’s ability to withstand attacks
(both accidental and intentional) to its security.
To measure integrity, two additional attributes must be defined: threat and
security.
Threat is the probability (which can be estimated or derived from empirical evidence)
that an attack of a specific type will occur within a given time. Security is the probability
(which can be estimated or derived from empirical evidence) that the attack of a specific
type will be repelled.
• Defect removal efficiency provides benefits at both the project and process level.
• It is defined as DRE = E / (E + D)
– is the number of errors found before delivery of the software to the end
user
To be an effective aid in process improvement and/or cost and effort estimation, baseline data
must have the following attributes:
(1) Data must be reasonably accurate—―guestimates‖ about past projects are to be avoided,
(2) Data should be collected for as many projects as possible
(3) Measures must be consistent (for example,a line of code must be interpreted consistently
across all projects for which data are collected)
(4) Applications should be similar to work that is to be estimated—it makes little sense to use
a baseline for batch information systems work to estimate a real-time, embedded application.
Metrics Collection, Computation, and Evaluation:
The process for establishing a metrics baseline is illustrated in below diagram. Ideally,
data needed to establish a baseline have been collected in an ongoing manner.
The objective of software project planning is to provide a framework that enables the
manager to make reasonable estimates of resources, cost, and schedule.
These estimates are made within a limited time frame at the beginning of a software
project and should be updated regularly as the project progresses.
Software scope describes the functions and features that are to be delivered to end
users.
Functions described in the statement of scope are evaluated prior to the beginning of
estimation.
Resources
1. Human Resources
The planner begins by evaluating scope and selecting the skills required to complete
development.
Both organizational position (e.g., manager, senior software engineer) and specialty
(e.g., telecommunications, database, and client/server) are specified.
The number of people required for a software project can be determined only after
an estimate of development effort (e.g., person-months) is made.
Off-the-shelf components. Existing software that can be acquired from a third party
or that has been developed internally for a past project.
3.Environmental Resources
The environment that supports the software project, often called the software
engineering environment (SEE), incorporates hardware and software.
Hardware provides a platform that supports the tools (software) required to produce
the work products that are an outcome of good software engineering practice
1. Delay estimation until late in the project (obviously, we can achieve100% accurate
estimates after the project is complete!).
Effort estimates.
4. Use one or more empirical models for software cost and effort estimation.
DECOMPOSITION TECHNIQUES
But before an estimate can be made, the project planner must understand the
scope of the software to be built and generate an estimate of its ―size.‖
Software Sizing
(1) The degree to which the planner has properly estimated the size of the product to
be built;
(2) The ability to translate the size estimate into human effort, calendar time,
Problem-Based Estimation
LOC and FP data are used in two ways during software project estimation:
(2) As baseline metrics collected from past projects with estimation variables
to develop cost and effort projections.
That is, projects should be grouped by team size, application area, complexity, and
other relevant parameters.
Using the System Specification as a guide, a preliminary statement of software scope can be
developed:
For our purposes, we assume that further refinement has occurred and that the following
major software functions are identified:
Following the decomposition technique for LOC, an estimation table, shown in Figure 5.3,
is developed. A range of LOC estimates is developed for each function. For example, the
range of LOC estimates for the 3D geometric analysis function is optimistic 4600 LOC,
most likely—6900 LOC, and pessimistic—8600 LOC.
The project planner estimates inputs, outputs, inquiries, files, and external
interfaces for the CAD software.
For the purposes of this estimate, the complexity weighting factor is assumed to be average.
Process-Based Estimation
The process is decomposed into a relatively small set of tasks and the effort required
to accomplish each task is estimated.
-----------------------------------
A typical estimation model is derived using regression analysis on data collected from
past software projects. The overall structure of such models takes the form .
E is effort in person-months,
Application composition model. Used during the early stages of software engineering,
when prototyping of user interfaces, consideration of software and system interaction,
assessment of performance, and evaluation of technology maturity are paramount.
Early design stage model. Used once requirements have been stabilized and basic software
architecture has been established.
The software equation [PUT92] is a dynamic multivariable model that assumes a specific
distribution of effort over the life of a software development project.
RISK MANAGEMENT
Definition of Risk
(or)
Risk concerns future happenings
Risk involves change in mind, opinion, actions, places, etc.
Risk involves choice and the uncertainty that choice entails
Two characteristics of risk
Uncertainty – the risk may or may not happen, that is, there are no 100% risks
(those, instead, are called constraints)
Loss – the risk becomes a reality and unwanted consequences or losses occur
Types of Risk (Risk Categorization)
Project risks
They threaten the project plan
If they become real, it is likely that the project schedule will slip and that costs
will increase
Technical risks
They threaten the quality and timeliness of the software to be produced
If they become real, implementation may become difficult or impossible
Business risks
They threaten the viability of the software to be builtIf they become real, they
jeopardize the project or the product
Known risks
Those risks that can be uncovered after careful evaluation of the project plan.
Predictable risks
Those risks that are extrapolated from past project experience (e.g., past
turnover)
Unpredictable risks
Those risks that can and do occur, but are extremely difficult to identify in
advance.
RISK STRATAGIES
2. Analyze each risk to estimate the probability that it will occur and the impact
4. Develop a contingency plan to manage those risks having high probability and
high impact
Risk Identification:
By identifying known and predictable risks, the project manager takes a first step
toward avoiding them when possible and controlling them when necessary
Generic risks
Risks that are a potential threat to every software project
Product-specific risks
Risks that can be identified only by those a with a clear understanding of the
technology, the people, and the environment that is specific to the software that
is to be built
This requires examination of the project plan and the statement of scope
"What special characteristics of this product may threaten our project plan?"
Risk Projection/Estimation Steps :
1. Establish a scale that reflects the perceived likelihood of a risk (e.g., 1-low,
10-high)
4 .Note the overall accuracy of the risk projection so that there will be no
misunderstandings
Summary Category 4)
An effective strategy for dealing with risk must consider three issues
Its goal is to assist project team in developing a strategy for dealing with risk
If a software team adopts a proactive approach to risk, avoidance is always the best strategy.
This is achieved by developing a plan for risk mitigation. For example, assume that high staff
turnover is noted as a project risk, r1. Based on past history and management intuition, the
likelihood, l1, of high turnover is estimated to be 0.70 percent, and the impact, x1, is
projected at level 2.
To mitigate this risk, project management must develop a strategy for reducing turnover.
Among the possible steps to be taken are
In the case of high staff turnover, the following factors can be monitored:
Risk management and contingency planning assumes that mitigation efforts have failed
and that the risk has become a reality. Continuing the example, the project is well underway
and a number of people announce that they will be leaving. If the mitigation strategy has been
followed, backup is available, information is documented, and knowledge has been dispersed
across the team.
In addition, the project manager may temporarily refocus resources to those functions that are
fully staffed, enabling newcomers who must be added to the team to ―get up to speed.‖ Those
individuals who are leaving are asked to stop all work and spend their last weeks in
―knowledge transfer mode.‖
It is important to note that RMMM steps incur additional project cost. For example, spending
the time to "backup" every critical technologist costs money.
RMMM PLAN
2)Risk Monitoring what factors can we track that will enable us to determine if the risk is
becoming more or less likely?
PROJECT SCHEDULING
Project Scheduling
Basic Principles:
Like all other areas of software engineering, a number of basic principles guide software
project scheduling:
Compartmentalization. The project must be compartmentalized into a number of manageable
activities and tasks. To accomplish compartmentalization, both theproduct and the process
are refined.
Interdependency. The interdependency of each compartmentalized activity ortask must be
determined. Some tasks must occur in sequence, while others can occur in parallel. Some
activities cannot commence until the work product produced by another is available. Other
activities can occur independently.
Time allocation. Each task to be scheduled must be allocated some number of work units
(e.g., person-days of effort). In addition, each task must be assigned a start date and a
completion date that are a function of the interdependencies and whether work will be
conducted on a full-time or part-time basis.
Effort validation. Every project has a defined number of people on the software team. As
time allocation occurs, you must ensure that no more than the allocated number of people has
been scheduled at any given time.
Defined responsibilities. Every task that is scheduled should be assigned to a specific team
member.
Defined outcomes. Every task that is scheduled should have a defined outcome.
For software projects, the outcome is normally a work product (e.g., the design of a
component) or a part of a work product. Work products are often combined in deliverables.
Defined milestones. Every task or group of tasks should be associated with a
project milestone.
Scheduling of a software project does not differ greatly from scheduling of any
multitask engineering effort.
Program evaluation and review technique (PERT) and the critical path method (CPM)
are two project scheduling methods that can be applied to software development.
Interdependencies among tasks may be defined using a task network. Tasks,sometimes called
the project work breakdown structure (WBS), are defined for the product as a whole or for
individual functions.
Both PERT and CPM provide quantitative tools that allow you to
(1) Determine the critical path—the chain of tasks that determines the duration of the project
(2) Establish ―most likely‖ time estimates for individual tasks by applying statistical models
(3) Calculate ―boundary times‖ that define a time ―window‖ for a particular task
Once the information necessary for the generation of a time-line chart has been input, the
majority of software project scheduling tools produce project tables—a tabular listing of all
project tasks, their planned and actual start and end dates, and a variety of related information
CPM models the activities and events of a project as a network. Activities are shown as
nodes on the network and events that signify the beginning or ending of activities are shown
as arcs or lines between the nodes
Steps in CPM Project Planning
1.Specify the individual activities.
2.Determine the sequence of those activities.
3.Draw a network diagram.
4.Estimate the completion time for each activity.