UNIT 1 Notes
UNIT 1 Notes
Nature of Software: Software Engineering, Software Process, A Generic Process Model, Process
Assessment and Improvement, Prescriptive Process Models- Waterfall Model, Incremental Models,
Evolutionary Models, Concurrent Models, Specialized Process Model, Unified Process, Personal and Team
process Models, Process technology, Agile development.
• Although the industry is moving toward component-based construction (e.g. standard screws and off-the-
shelf integrated circuits), most software continues to be custom-built. Modern reusable components
encapsulate data and processing into software parts to be reused by different programs. E.g. graphical user
interface, window, pull-down menus in library etc.
• Software Applications
Software Engineering: The application of a systematic, disciplined, quantifiable approach to the development,
operation and maintenance of software; that is, the application of engineering to software.
The seminal definition:
Software engineering is the establishment and use of sound engineering principles in order to obtain
economically software that is reliable and works efficiently on real machines.
The IEEE definition:
Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the application of engineering to software. (2)
The study of approaches as in (1).
Software engineering is a descipline in which theories,methods & tools are applied to drevelop
professional software product.
Systematic & organized approach.
Based on two terms
1. Discipine:- An engineer applies appropriate theories,methods & tools.Organizational & financial
constraints.
2. Products:-
Software products
Software when made for a specific reuirementsis called software product.Software products are a Software
systems that delivered to customer with documentation.It may be a part of system product,whee hardware
plus software delivered to customer.Software products are producedwith the help of the software process.It
may be include source code , specification document,manuals documentation etc.
Operational: -
This tells us how well software works in operations. It can be measured on:
Budget
Usability
Efficiency
Correctness
Functionality
Dependability
Security
Safety
Transitional: -
This aspect is important when the software is moved from one platform to another:
Portability
Interoperability
Reusability
Adaptability
Maintenance: -
This aspect briefs about how well software has the capabilities to maintain itself in the ever-changing
environment:
Modularity
Maintainability
Flexibility
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.
1. FRAMEWORK ACTIVITIES:-
Task sets:- DefIne actual work done to achieve the s/w objectives.
Collection of s/w engineering work tasks
project milestones
SQA
Umbrella Activities
Complement the five process framework activities and help team manage and control progress, quality,
change, and risk.
1. Software project tracking and control: assess progress against the plan and take actions to maintain the
schedule.
2. Risk management: assesses risks that may affect the outcome and quality.
3. Software quality assurance: defines and conduct activities to ensure quality.
4. Technical reviews: assesses work products to uncover and remove errors before going to the next activity.
5. Measurement: define and collects process, project, and product measures to ensure stakeholder’s
needs are met.
6. Software configuration management: manage the effects of change throughout the software process.
7. Reusability management: defines criteria for work product reuse and establishes mechanism to
achieve reusable components.
8. Work product preparation and production: create work products such as models, documents, logs,
forms and lists.
A Layered Technology
Any engineering approach must rest on organizational commitment to quality which fosters a
continuous process improvement culture.
Process layer as the foundation defines a framework with activities for effective delivery of software
engineering technology. Establish the context where products (model, data, report, and forms) are
produced, milestone are established, quality is ensured and change is managed.
Method provides technical how-to’s for building software. It encompasses many tasks including
communication, requirement analysis, design modeling, program construction, testing and support.
Tools provide automated or semi-automated support for the process and methods.
A process is a collection of activities, actions and tasks that are performed when some work product is to
be created. It is not a rigid prescription for how to build computer software. Rather, it is an adaptable
approach that enables the people doing the work to pick and choose the appropriate set of work actions
and tasks.
Purpose of process is to deliver software in a timely manner and with sufficient quality to satisfy those
who have sponsored its creation and those who will use it.
Software Product: -
A software product, user interface must be carefully designed and implemented because developers of that
product and users of that product are totally different. In case of a program, very little documentation is
expected, but a software product must be well documented. A program can be developed according to the
programmer’s individual style of development, but a software product must be developed using the accepted
software engineering principles.
Definition: Software Development Life Cycle (SDLC) is a process used by software industry to design, develop
and test high quality software. The SDLC aims to produce high-quality software that meets or exceeds customer
expectations, reaches completion within times and cost estimates.
SDLC is the acronym of Software Development Life Cycle. It is also called as Software development process.
The software development life cycle (SDLC) is a framework defining tasks performed at each step in the software
development process.
• ISO/IEC 12207 is an international standard for software life-cycle processes. It aims to be the standard that
defines all the tasks required for developing and maintaining software.
• Software Engineering Process Technology Company, (SEPT) is a firm specializing in meeting the
software process standards information needs of the professional community, particularly concerning
ISO/IEC 12207.
• International Electrotechnical Commission (IEC)
• International Organization for Standardization (ISO)
• The SDLC is a framework that describes the activities performed at each stage of a software development
project.
• SDLC process is used by the software industry to design, develop and test high quality software.
• It aims to produce the quality software that meets or exceeds customer expectations, reaches completion
within time and budget.
• Every textbook has different names for the stages of the SDLC
• Usually they stages are
• Planning & Reuirement analysis (just after Conception)
• Defining
• Design
• Building[Coding]
• Testing
• Depolyment
• Maintenance (starting Maturity)
SDLC Models
• Waterfall Model
• Iterative Model
• Spiral Model
• Agile Model
• V – Model
• Big Bang Model
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
The name 'prescriptive' is given because the model prescribes a set of activities, actions, tasks, quality
assurance and change the mechanism for every project.
There are three types of prescriptive process models. They are:
Sometimes called the classic life cycle or the waterfall model, the linear sequential model suggests a systematic,
sequential approach to software development that begins at the system level and progresses through analysis,
design, coding, testing, and maintenance.
Figure 1.1: Waterfall model
Software requirements analysis: The requirements gathering process is focused specifically on software.
To understand the nature of the program(s) to be built, the software engineer ("analyst") must understand
the information domain for the software, as well as required function, behavior, performance, and interface.
Requirements for both the system and the software are documented and reviewed with the customer.
Requirement gathering and Analysis phase the basic requirements of the system must be understood by
software engineer, who is also called ANALYST. All this requirements are then well documented and
discussed further with the customer for reviewing.
Design: Software design is actually a multi-step process that focuses on four distinct attributes of a program: data
structure, software architecture, interface representations, and procedural (algorithmic) detail. The design process
translates requirements into a representation of the software that can be assessed for quality before coding begins.
Like requirements, the design is documented and becomes part of the software configuration.
The customer requirements are broken down into logical modules for the ease of implementation.
Hardware and software requirements for every module are Identified and designed accordingly. Ø
Also the inter relation between the various logical modules is established at this stage.
Algorithms and diagrams defining the scope and objective of each logical model are developed. Ø
In short, this phase lays a fundamental for actual programming and implementation.
It is a intermediate step between requirements analysis and coding. Design focuses on program attribute
such as-
1) Data Structure.
2) Software Architecture.
3) Algorithm Details
The requirements are translated in some easy to represent form using which coding can be done effectively
and efficiently.
The desing needs to be documented for further use.
Development / Coding : The design must be translated into a machine-readable form. The code generation step
performs this task. If design is performed in a detailed manner, code generation can be accomplished
mechanistically.
Testing: Once code has been generated, program testing begins. The testing process focuses on the logical
internals of the software, ensuring that all statements have been tested, and on the functional externals; that is,
conducting tests to uncover errors and ensure that defined input will produce actual results that agree with required
results. In this stage, both individual components and the integrated whole are methodically verified to ensure
that they are error- free and fully meet the requirements outlined in the first step.
In this phase testing whole software into two parts
1) HARDWARE &
2) SOFTWARE.
Type of testing is 2-types 1) Inside test. 2) Outside test.
• Logical Internals of the Software.
Uncover errors,fix the bugs & meet customers requirements.
Deployment & Maintenance: Software will undoubtedly undergo change after it is delivered to the customer (a
possible exception is embedded software). Change will occur because errors have been encountered, because the
software must be adapted to accommodate changes in its external environment (e.g., a change required because of
a new operating system or peripheral device), or because the customer requires functional or performance
enhancements. Software support/maintenance reapplies each of the preceding phases to an existing program rather
than a new one. This is the final phase of the waterfall model, in which the completed software product is handed
over to the client after alpha, beta testing. Ø
After the software has been deployed on the client site, it is the duty of the software development team to
undertake routine maintenance activities by visiting the client site.
If the customer suggests changes or enhancements the software process has to be followed all over again
right from the first phase i.e requirement analysis.
PROTOTYPING MODEL:
A prototype is a toy implementation of the system. A prototype usually exhibits limited
functional capabilities, low reliability, and inefficient performance compared to the actual
software. A prototype is usually built using several shortcuts. The shortcuts might involve
using inefficient, inaccurate, or dummy functions. The shortcut implementation of a
function, for example, may produce the desired results by using a table look-up instead of
performing the actual computations. A prototype usually turns out to be a very crude version
of the actual system.
Data modeling: The information flow defined as part of the business modeling phase
is refined into a set of data objects that are needed to support the business. The
characteristics (called attributes) of each object are identified and the relationships
between these objects defined. Data Modeling The information collected from
business modeling is refined into a set of data objects that are significant for the
business. Characteristics of data objects are identified. Relationship among various
data objects is defined.
Process Modeling The data object that is declared in the data modeling phase is
transformed [PROCESS] to achieve the information flow necessary to implement a
business function.
Pocess are to extract the information from data objects & are
resposible for implementing business function.
The data objects defined in the data modeling phase are transformed to achieve the
information flow necessary to implement a business function. Processing descriptions are
created for adding, modifying, deleting, or retrieving a data object.
Application generation: RAD assumes the use of fourth generation techniques.
Rather than creating software using conventional third generation programming
languages the RAD process works to reuse existing program components (when
possible) or create reusable components (when necessary). In all cases, automated
tools are used to facilitate construction of the software. Automated tools are used for
the construction of the software, to convert process and data models into prototypes.
Use of reusable components or create reusable componentsto have rpid development
of S/W.
Testing & Turnover As prototypes are individually tested during every iteration, the
overall testing time is reduced in RAD.Testing efforts are reduceddue to reusable
components.
Since the RAD process emphasizes reuse, many of the program components have already
been tested. This reduces overall testing time. However, new components must be tested and
all interfaces must be fully exercised.
Figure 1.3: RAPID
APPLICATION MODEL
Major Difference between RAD & Incremental Model
RAD model is planned for short duration of implementation & Delivery.
Most experienced programmers are involved in RAD Model.
Incremental model Application will be developed in a set of divided timelines called
iterations, each iteration results in deliverable product at the end.
Advantages of the RAD model:
INCREMENTAL MODEL:
The incremental model combines the elements of waterfall model and they are
applied in an iterative fashion.
The first increment in this model is generally a core product.
Each increment builds the product and submits it to the customer for any suggested
modifications.
The next increment implements on the customer's suggestions and add additional
requirements in the previous increment.
This process is repeated until the product is finished.
● In incremental model the whole requirement is divided into various builds. LIke
waterfall model.Analysis Design Code Test.
● Each module (independent units) passes through the requirements, design,
implementation and testing phases.
● The incremental build model is a method of software development where the product
is designed,
● implemented and tested incrementally until the product is finished.
For example, the word-processing software is developed using the incremental model.
SPIRAL MODEL :
The spiral model, is an evolutionary software process model that couples the iterative nature
of prototyping with the controlled and systematic aspects of the linear sequential model. It
provides the potential for rapid development of incremental versions of the software. Using
the spiral model, software is developed in a series of incremental releases. During early
iterations, the incremental release might be a paper model or prototype. During later
iterations, increasingly more complete versions of the engineered system are produced.
A spiral model is divided into a number of framework activities, also called task regions.
Project entry point axis is defined this axis represents starting point for different types of
project. Every framework activities represent one section of the spiral path. As the
development process starts, the software team performs activities that are indirect by a path
around the spiral model in a clockwise direction. It begins at the center of spiral model.
Typically, there are between three and six task regions. In blow Figure depicts a spiral
model that contains six task regions:
Customer communication—tasks required to establish effective communication
between developer and customer.
Planning—tasks required to define resources, time lines, and other project related
information.
Risk analysis—tasks required to assess both technical and management risks.
Engineering—tasks required to build one or more representations of the application.
Construction and release—tasks required to construct, test, install, and provide user
support(e.g., documentation and training).
Customer evaluation—tasks required to obtain customer feedback based on evaluation
of the software representations created during the engineering stage and implemented
during the installation stage.
Level 1: Initial. The software process is characterized as ad hoc and occasionally even
chaotic. Few processes are defined, and success depends on individual effort. Initial : The
software process is characterized as ad hoc, and occasionally even chaotic. Few processes are
defined, and success depends on individual effort.
At this level, frequently have difficulty making commitments that the staff can meet
with an orderly process
Products developed are often over budget and schedule
Wide variations in cost, schedule, functionality and quality targets
Capability is a characteristic of the individuals, not of the organization
Level 2: Repeatable. Basic project management processes are established to track cost,
schedule, and functionality. The necessary process discipline is in place to repeat earlier
successes on projects with similar applications.
Level 3: Defined. The software process for both management and engineering activities is
documented, standardized, and integrated into an organization wide software process. All
projects use a documented and approved version of the organization's process for developing
and supporting software. This level includes all characteristics defined for level 2.
Level 4: Managed. Detailed measures of the software process and product quality are
collected. Both the software process and products are quantitatively understood and controlled
using detailed measures. This level includes all characteristics defined for level 3. Detailed
measures of the software process and product quality are collected. Both the software process
and products are quantitatively understood and controlled.
Narrowing the variation in process performance to fall within acceptable quantitative
bounds
When known limits are exceeded, corrective action can be taken
Quantifiable and predictable
predict trends in process and product quality
The five levels defined by the SEI were derived as a consequence of evaluating responses to
the SEI assessment questionnaire that is based on the CMM. The results of the questionnaire
are distilled to a single numerical grade that provides an indication of an organization's
process maturity.
Figure 1.9: Capability Maturity
Model
2. Elaboration - The project's architecture and required resources are further evaluated.
Developers consider possible applications of the software and costs associated with
the development.
Planning and modeling are main.
Detailed evaluation, development plan is carried out and diminish the risks.
Revise or redefine use-case model (approx. 80%), business case, risks.
Again, checked against milestone criteria and if it couldn’t pass these criteria
then again project can be cancelled or redesigned.
Executable architecture baseline.
4. Transition - The software is released to the public. Final adjustments or updates are
made based on feedback from end users.
5. Production –
Final phase of the model.
Project is maintained and updated accordingly.
The RUP development methodology provides a structured way for companies to envision
create software programs. Since it provides a specific plan for each step of the development
process, it helps prevent resources from being wasted and reduces unexpected development
costs.
Discipline of RUP
1. Business Modeling
Business modeling explains how to describe a vision of the organization in which the system will be
deployed and how to then use this vision as a basis to outline the process, roles and responsibilities.
Organizations are becoming more dependent on IT systems, making it imperative that information system
engineers know how the applications they are developing fit into the organization. Businesses invest in IT
when they understand the competitive advantage and value added by the technology. The aim of business
modeling is to first establish a better understanding and communication channel between business
engineering and software engineering. Understanding the business means that software engineers must
understand the structure and the dynamics of the target organization (the client), the current problems in the
organization, and possible improvements. They must also ensure a common understanding of the target
organization between customers, end users and developers.
2. Requirements
Requirements explain how to elicit stakeholder requests and transform them into a set of requirements work
products that scope the system to be built and provide detailed requirements for what the system must do.
3. Analysis and Design
The goal of analysis and design is to show how the system will be realized. The aim is to build a system that:
To define the organization of the code in terms of implementation subsystems that are
organized in layers.
To implement classes and objects in terms of components (source files, binaries, executables,
and others).
To test the developed components as units.
To integrate the results produced by individual implementers (or teams) into an executable
system.
Systems are realized through the implementation of components. The process describes how to reuse existing
components, or implement new components with well-defined responsibility, making the system easier to
maintain and increasing the possibilities to reuse.
5. Test
Test workflow: The purpose of testing is to assess product quality. This not only involves the final product,
but also begins early in the project with the assessment of the architecture and continues through the
assessment of the final product delivered to customers. The test workflow involves the following:
6. Deployment
The purpose of deployment is to successfully produce product releases, and to deliver the software to
its end users. It covers a wide range of activities including producing external releases of the software,
packaging the software and business application, distributing the software, installing the software, and
providing help and assistance to users. Although deployment activities are mostly centered around the
transition phase, many of the activities need to be included in earlier phases to prepare for deployment
at the end of the construction phase. The Deployment and Environment workflows of the Rational
Unified Process contain less detail than other workflows.
People: -
The primary element of any project is the people. People gather requirements, people
interview users (people), people design software, and people write software for people. No
people -- no software. I'll leave the discussion of people to the other articles in this special
issue, except for one comment. The best thing that can happen to any software project is to
have people who know what they are doing and have the courage and self-discipline to do
it. Knowledgeable people do what is right and avoid what is wrong. Courageous people tell
the truth when others want to hear something else. Disciplined people work through projects
and don't cut corners. Find people who know the product and can work in the process.
Process: -
Process is how we go from the beginning to the end of a project. All projects use a process.
Many project managers, however, do not choose a process based on the people and product
at hand. They simply use the same process they've always used or misused. Let's focus on
two points regarding process: (1) process improvement and (2) using the right process for
the people and product at hand.
Product: -
The product is the result of a project. The desired product satisfies the customers and keeps
them coming back for more. Sometimes, however, the actual product is something less. The
product pays the bills and ultimately allows people to work together in a process and build
software. Always keep the product in focus.
PRODUCT AND PROCESS METRICS:
Software process metrics measure the software development process and environment.
Example productivity, effort estimates, efficiency and failure rate. Software Product metrics
measure the software product. Example: - size, reliability, complexity and functionality.
When formal methods are used during design, they serve as a basis for program
verification and therefore enable you to discover and correct errors that might otherwise
go undetected.
Although not a mainstream approach, the formal methods model offers the promise of
defect free software.
Draw Backs:
• The development of formal models is currently quite time consuming and expensive.
• Because few software developers have the necessary background to apply formal
methods, extensive training is required.
• It is difficult to use the models as a communication mechanism for Technically
unsophisticated customers.
• Leads to mathematical specification
• Mechanism for eliminating many problems
• Quite time consuming and expensive
• Difficult to use the models as communication mechanism
• High level design. External specifications for each component to be constructed are
developed and a component design is created. Prototypes are built when uncertainty
exists. All issues are recorded and tracked.
• High level design review. Formal verification methods are applied to uncover errors
in the design. Metrics are maintained for all important tasks and work results.
• Development. The component level design is refined and reviewed. Code is
generated, reviewed, compiled, and tested. Metrics are maintained for all important
tasks and work results.
• Postmortem. Using the measures and metrics collected, the effectiveness of the
process is determined. Measures and metrics should provide guidance for modifying
the process to improve its effectiveness.
•
Personal Software Process (PSP)
The PSP model defines five framework activities
Planning
High-level design
High-level design review
Development
Postmortem
•
TSP defines the following framework activities: project launch, high level design,
implementation, personal and team process model, integration and test, and
postmortem.
2. Team Software Process (TSP)
Watts Humphrey extended the lessons learned from the introduction of PSP and proposed
a Team Software Process (TSP). The goal of TSP is to build a “self directed” project
team that organizes itself to produce high quality software.
Agile Model
Agile is a term used to describe approaches to software development emphasizing
incremental delivery, team collaboration, continual planning, and continual learning,
instead of trying to deliver it all at once near the end.
Agile focuses on keeping the process lean and creating minimum viable products
(MVPs) that go through a number of iterations before anything is final. Feedback is
gathered and implemented continually and in all, it is a much more dynamic process
where everyone is working together towards one goal.
The meaning of Agile is swift or versatile."Agile process model" refers to a software
development approach based on iterative development.
Agile methods break tasks into smaller iterations, or parts do not directly involve long
term planning.
The project scope and requirements are laid down at the beginning of the
development process.
Plans regarding the number of iterations, the duration and the scope of each iteration
are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks.
The division of the entire project into smaller parts helps to minimize the project risk
and to reduce the overall project delivery time requirements.
Each iteration involves a team working through a full software development life cycle
including planning, requirements analysis, design, coding, and testing before a
working product is demonstrated to the client.
1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project.
Based on this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a
working product. The product will undergo various stages of improvement, so it
includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Agile Testing Methods:
1. Scrum
2. Crystal
3. Dynamic Software Development Method(DSDM)
4. Feature Driven Development(FDD)
5. Lean Software Development
6. eXtreme Programming(XP)
When to use the Agile Model
1. When frequent changes are required.
2. When a highly qualified and experienced team is available.
3. When a customer is ready to have a meeting with a software team all the time.
4. When project size is small.