SEN chp1
SEN chp1
SEN chp1
Software is-
• Instructions (computer programs) that when executed provide desired
function and performance,
• Data structures that enable the programs to adequately manipulate
information, and
• Documents that describe the operation and use of the programs.
Software Engineering
• A Quality Focus:
Any engineering approach must rest on an organizational commitment to quality.
Total quality management, six sigma and similar philosophies foster a continuous
process improvement culture, and it is this culture that ultimately leads to the
development of increasingly more effective approaches to software engineering.
The bedrock that supports software engineering is a quality focus.
• Process Layer:
The foundation for software engineering is the process layer. Software Engineering
process is the glue that holds the technology layers together and enables rational
ZEBA SYED Page 1
SEN (AY 2023-24) Software Development Process
• Methods:
Software Engineering methods provide the technical ―how to building software.
Methods encompass a broad array of tasks that include communication,
requirements analysis, design modeling, program construction, testing and support.
• Tools:
Software Engineering tools provide automated or semi-automated support for the
process and the methods. When tools are integrated so that information created by
one tool can be used by another, a system for the support of software development,
called computer–aided software engineering is established.
TYPES OF SOFTWARE
function and control capability (e.g. digital functions in an automobile such as fuel
control, dashboard displays, braking systems, etc.)
4. Web – applications: Web Apps, span a wide array of applications. Web apps
are evolving into sophisticated computing environments that not only provide
standalone features, computing functions, and content to the end user, but also are
integrated with corporate databases and business applications.
PROCESS MODELS
The waterfall model is a traditional method, sometimes called the classic life cycle.
This is one of the initial models. As the figure implies stages are cascaded and
shall be developed one after the other. It suggests a systematic, sequential approach
to software development that begins with customer specification of requirements
and progresses through, communication, planning, modeling construction and
deployment.
In other words one stage should be completed before the other begins. Hence,
when all the requirements are elicited by the customer, analyzed for completeness
and consistency, documented as per requirements, the development and design
activities commence. One of the main needs of this model is the user„s explicit
prescription of complete requirements at the start of development. For developers
it is useful to lay out what they need to do at the initial stages. Its simplicity makes
it easy to explain to customers who may not be aware of software development
process. It makes explicit with intermediate products to begin at every stage of
development.
One of the biggest limitation is it does not reflect the way code is really developed.
Problem is well understood but software is developed with great deal of iteration.
Often this is a solution to a problem which was not solved earlier and hence
software developers shall have extensive experience to develop such application;
as neither the user nor the developers are aware of the key factors affecting the
desired outcome and the time needed. Hence at times the software development
process may remain uncontrolled. Today software work is fast paced and subject to
a never-ending stream of changes in features, functions and information content.
Waterfall model is inappropriate for such work. This model is useful in situation
where the requirements are fixed and work proceeds to completion in a linear
manner.
The incremental model combines elements of linear and parallel process flows.
When an incremental model is used, the first increment is often a core product.
That is, basic requirements are addressed but many supplementary features remain
undelivered. The core product is used by the customer. As a result of use and/or
evaluation, a plan is developed for the next increment. The plan addresses the
modification of the core product to better meet the needs of the customer and the
Spiral Model
Identification
This phase starts with gathering the business requirements in the baseline spiral. In
the subsequent spirals as the product matures, identification of system
requirements, subsystem requirements and unit requirements are all done in this
phase.
This phase also includes understanding the system requirements by continuous
communication between the customer and the system analyst. At the end of the
spiral, the product is deployed in the identified market.
Design
The Design phase starts with the conceptual design in the baseline spiral and
involves architectural design, logical design of modules, physical product design
and the final design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product at every
spiral. In the baseline spiral, when the product is just thought of and the design is
being developed a POC (Proof of Concept) is developed in this phase to get
customer feedback.
Then in the subsequent spirals with higher clarity on requirements and design
details a working model of the software called build is produced with a version
number. These builds are sent to the customer for feedback.
• Writing unit tests before programming and keeping all of the tests running at
all times. The unit tests are automated and eliminate defects early, thus
reducing the costs.
• Starting with a simple design just enough to code the features at hand and
redesigning when required.
• Programming in pairs (called pair programming), with two programmers at
one screen, taking turns to use the keyboard. While one of them is at the
keyboard, the other constantly reviews and provides inputs.
• Integrating and testing the whole system several times a day.
• Putting a minimal working system into the production quickly and
upgrading it whenever required.
• Keeping the customer involved all the time and obtaining constant feedback.
Iterating facilitates the accommodating changes as the software evolves with
the changing requirements.
Speculation
The project is initiated and adaptive cycle planning is conducted.
Adaptive cycle planning uses the customer‟s mission statement, project constraints,
and basic requirements to define the set of release cycles that will be required.
Collaboration
Motivated people work together in a way that multiplies their talent and creative
output beyond their absolute numbers.
People working together must trust one another to:
• Criticize without animosity. Assist without resentment
• Work as hard as they do.
Learning
ASD teams learn in three ways:
• Focus groups where the customer or users provide feedback on software
increments
• Formal technical reviews where ASD team members review the software
components developed
• Postmortems where the team becomes introspective, addressing its own
performance
SCRUM
CRYSTAL