Unit - I
Unit - I
Software is
Instructions (computer programs) that provide desired features, function, and
performance, when executed
Data structures that enable the programs to adequately manipulate information,
Documents that describe the operation and use of the programs.
Characteristics of Software:
Software is developed or engineered; it is not manufactured in the
classical sense. Software does not ―wear out‖
Although the industry is moving toward component-based construction,
most software continues to be custom built.
Software Engineering:
The systematic, disciplined quantifiable approach to the development,
operation and maintenance of software; that is, the application of
engineering to software.
System software:
System software is a collection of programs written to service other programs.
The systems software is characterized by Heavy interaction with computer
hardware heavy usage by multiple users. Concurrent operation that requires
scheduling, resource sharing, and sophisticated process management complex
data structures multiple external interfaces
Application software:
Application software consists of standalone programs that solve a specific
business need. It facilitates business operations or management/technical
decision making. It is used to control business functions in real-time.
Engineering/Scientific software:
Engineering and scientific applications range
- from astronomy to volcano logy
- from automotive stress analysis to space shuttle orbital dynamics
- from molecular biology to automated manufacturing
SOFTWARE MYTHS
Beliefs about software and the process used to build it- can be traced to the
earliest days of computing myths have a number of attributes that have made
them insidious.
Myth: If I decide to outsource the software project to a third party, I can just
relax and let that firm built it.
Reality: If an organization does not understand how to manage and control
software projects internally, it will invariably struggle when it outsources
software projects.
Customer myths: The customer believes myths about software because software
managers and practitioners do little to correct misinformation. Myths lead to
false expectations and ultimately, dissatisfaction with the developer.
Myth: A general statement of objectives is sufficient to begin with writing
programs - we can fill in the details later.
Reality: Although a comprehensive and stable statement of requirements is not
always possible, an ambiguous statement of objectives is recipe for disaster.
Myth: The only deliverable work product for a successful project is the working
program.
Reality: A working program is only one part of a software configuration that
includes many elements. Documentation provides guidance for software
support.
Myth: software engineering will make us create voluminous and unnecessary
documentation and will invariably slows down.
Reality: software engineering is not about creating documents. It is about
creating quality. Better quality leads to reduced rework. And reduced rework
results in faster delivery times.
A PROCESS FRAMEWORK:
Software process must be established for effective delivery of software
engineering technology. A process framework establishes the foundation for a
complete software process by identifying a Small l number of framework
activities that are applicable to all software projects, regardless of their size or
complexity.
In brief
"A process defines who is doing what, when, and how to reach a certain goal."
A Process Framework
Establishes the foundation for a complete software process identifies a small
number of framework activities applies to all s/w projects, regardless
of Size / Complexity. Also, set of umbrella activities applicable across entire
s/w process.
Each framework activity has set of s/w engineering actions.
Each s/w engineering action (e.g., design) has collection of related tasks (called
task sets):
work tasks
Work products
(deliverables) quality assurance points
project milestones.
Generic Process Framework: It is applicable to the vast majority of software
projects
Communication activity
Planning activity
modelling activity
Analysis action
Requirements gathering
task elaboration
Negotiation work task
specification work task
validation work task
Design action
Data design work task
architectural design work task
interface design work task
component-level design work task
Construction activity
Deployment activity
Communication: This framework activity involves heavy communication and
collaboration with the customer and encompasses requirements gathering and
other related activities.
Planning: This activity establishes a plan for the software engineering work
that follows. It describes the technical tasks to be conducted, the risks that are
likely, the resources that will be required, the work products to be produced, and
a work schedule.
Modelling: This activity encompasses the creation of models that allow the
developer and customer to better understand software requirements and the
design that will achieve those requirements. The modelling activity is composed
of 2 software engineering actions- analysis and design.
Construction: This activity combines core generation and the testing that is
required for uncovering the errors in the code.
Risk Management - assesses risks that may affect the outcome of the project or
the quality of the product.
Each process area is formally assessed against specific goals and practices and
is rated according to the following capability levels.
Level 0: Incomplete. The process area is either not performed or does not
achieve all goals and objectives defined by CMMI for level 1 capability.
Level 1: Performed. All of the specific goals of the process area have been
satisfied. Work tasks required to produce defined work products are being
conducted.
Level 2: Managed. All level 1 criteria have been satisfied. In addition, all work
associated with the process area conforms to an organizationally defined policy;
all people doing the work have access to adequate resources to get the job done;
stakeholders are actively involved in the process area as required; all work tasks
and work products are ―monitored, controlled, and reviewed;
Level 3: Defined. All level 2 criteria have been achieved. In addition, the
process is ―tailored from the organizations set of standard processes according
to the organizations tailoring guidelines, and contributes and work products,
measures and other process-improvement information to the organizational
process assets‖.
Level 4: Quantitatively managed. All level 3 criteria have been achieved. In
addition, the process area is controlled and improved using measurement and
quantitative assessment. Quantitative objectives for quality and process
performance are established and used as criteria in managing the process.
Level 5: Optimized. All level 4 criteria have been achieved. In addition, the
process area is adapted and optimized using quantitative means to meet
changing customer needs and to continually improve the efficacy of the process
area under consideration.
The CMMI defines each process area in terms of ―specific goals‖ and the
―specific practices‖ required to achieve these goals. Specific practices refine a
goal into a set of process-related activities.
The specific goals (SG) and the associated specific practices(SP) defined for
project planning are
SG 1 Establish estimates
SP 1.1 Estimate the scope of the project
SP 1.2 Establish estimates of work product and task attributes
SP 1.3 Define project life cycle
SP 1.4 Determine estimates of effort and cost
Process Models:
• The model requires requirements to be explicitly spelled out in the beginning, which
is often difficult
• A working model is not available until late in the project time plan.
Today, Agile methodology is often used in place of the waterfall model. However,
there are advantages to the waterfall approach, such as the following:
Enables large or changing teams to move toward a common goal that has been
defined in the requirements stage;
Forces structured, disciplined organization;
Simplifies understanding, following and arranging tasks;
Facilitates departmentalization and managerial control based on the schedule or
deadlines;
Reinforces good coding habits to define before implementing design and then
code;
enables early system design and specification changes to be easily done; and
clearly defines milestones and deadlines.
9. Easier to debug.
a. Requirements gathering
b. Design the requirements
c. Construction/ iteration
d. Testing/ Quality assurance
e. Deployment
f. Feedback
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 the 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.
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
Graphically, the spiral model consists of multiple phases that are executed in a
cyclic or spiral fashion, with each iteration referred to as a "spiral."
The primary purpose of the planning phase in the spiral model SDLC is to
collect, understand and identify the core objectives and set some alternative
solutions.
b) Risk Analysis (Risk Management):
In this phase of the spiral model for software development, the developer term
will identify all the potential risks that will arise during the software
development process. After the risk identification process, the developer team
will release a prototype, which will be a risk-free demographic version of the
software. Not only will the developer release a risk-free prototype, but they
also will plan alternative solutions to handle the risk.
After the software engineering is done designing the software, they will start
coding, testing and the deployment process. Moreover, developers will deploy
the software on the client’s site to gather feedback. This phase in the spiral
model is totally technical and needs experience and expertise to tackle any
challenge or change.
After the launch of a software project on the client’s site, the client is
open to sharing feedback and insightful observations about the
software.
Hence, the testing team from the client side will note down all the
feedback, observations, additions and changes needed in the software or
its functionality. All the correction lists will be sent to the development
team.
Again, a new baseline will begin to fix all the bugs, and after fixation of
all requirements, the final product will be ready for final launch.
a. Complexity
b. Expensive
c. Follows multiple iterations
d. Time-consuming