Software Engineering (Lec 1)
Software Engineering (Lec 1)
useful and efficient computer programs in the required time. The software crisis
was due to using the same workforce, same methods, and same tools even
though rapidly increasing software demand, the complexity of software,
and software challenges. With the increase in software complexity, many
software problems arise because existing methods were insufficient.
If we use the same workforce, same methods, and same tools after the fast
increase in software demand, software complexity, and software challenges,
then there arise some issues like software budget problems, software efficiency
problems, software quality problems, software management, and delivery
problems, etc. This condition is called a Software Crisis.
Software Crisis
2. Documentation –
Source information about the product contained in design documents,
detailed code comments, etc.
3. Operating Procedures –
Set of step-by-step instructions compiled by an organization to help workers
carry out complex routine operations.
4. Code: the instructions that a computer executes in order to perform a
specific task or set of tasks.
5. Data: the information that the software uses or manipulates.
6. User interface: the means by which the user interacts with the software,
such as buttons, menus, and text fields.
7. Libraries: pre-written code that can be reused by the software to perform
common tasks.
8. Documentation: information that explains how to use and maintain the
software, such as user manuals and technical guides.
9. Test cases: a set of inputs, execution conditions, and expected outputs that
are used to test the software for correctness and reliability.
10. Configuration files: files that contain settings and parameters that are
used to configure the software to run in a specific environment.
11. Build and deployment scripts: scripts or tools that are used to build,
package, and deploy the software to different environments.
12. Metadata: information about the software, such as version numbers,
authors, and copyright information.
All these components are important for software development, testing and
deployment.
There are four basic key process activities:
1. Software Specifications –
In this process, detailed description of a software system to be developed
with its functional and non-functional requirements.
2. Software Development –
In this process, designing, programming, documenting, testing, and bug
fixing is done.
3. Software Validation –
In this process, evaluation software product is done to ensure that the
software meets the business requirements as well as the end users needs.
4. Software Evolution –
It is a process of developing software initially, then timely updating it for
various reasons.
Software Crisis :
1. Size and Cost –
Day to day growing complexity and expectation out of software. Software are
more expensive and more complex.
2. Quality –
Software products must have good quality.
3. Delayed Delivery –
Software takes longer than the estimated time to develop, which in turn
leads to cost shooting up.
4. The term “software crisis” refers to a set of problems that were faced by the
software industry in the 1960s and 1970s, such as:
5. High costs and long development times: software projects were taking much
longer and costing much more than expected.
6. Low quality: software was often delivered late, with bugs and other defects
that made it difficult to use.
7. Lack of standardization: there were no established best practices or
standards for software development, making it difficult to compare and
improve different approaches.
8. Lack of tools and methodologies: there were few tools and methodologies
available to help with software development, making it a difficult and time-
consuming process.
9. These problems led to a growing realization that the traditional approaches
to software development were not effective and needed to be improved. This
led to the development of new software development methodologies, such
as the Waterfall and Agile methodologies, as well as the creation of new
tools and technologies to support software development.
However, even today, software crisis could be seen in some form or the other,
like for example software projects going over budget, schedule and not meeting
the requirement.
3. Dataflow Model –
It is diagrammatic representation of the flow and exchange of information
within a system.
Software Processes
The term software specifies to the set of computer programs, procedures
and associated documents (Flowcharts, manuals, etc.) that describe the
program and how they are to be used.
1. The waterfall approach: This takes the above activities and produces them
as separate process phases such as requirements specification, software
design, implementation, testing, and so on. After each stage is defined, it is
"signed off" and development goes onto the following stage.
2. Evolutionary development: This method interleaves the activities of
specification, development, and validation. An initial system is rapidly
developed from a very abstract specification.
3. Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification, using
mathematical methods to a program. These transformations are 'correctness
preserving.' This means that you can be sure that the developed programs
meet its specification.
4. System assembly from reusable components: This method assumes the
parts of the system already exist. The system development process target on
integrating these parts rather than developing them from scratch.
Software Crisis
1. Size: Software is becoming more expensive and more complex with the
growing complexity and expectation out of software. For example, the code
in the consumer product is doubling every couple of years.
2. Quality: Many software products have poor quality, i.e., the software
products defects after putting into use due to ineffective testing technique.
For example, Software testing typically finds 25 errors per 1000 lines of code.
3. Cost: Software development is costly i.e. in terms of time taken to develop
and the money involved. For example, Development of the FAA's Advanced
Automation System cost over $700 per lines of code.
4. Delayed Delivery: Serious schedule overruns are common. Very often the
software takes longer than the estimated time to develop, which in turn leads
to cost shooting up. For example, one in four large-scale development
projects is never completed.
In other words, a life cycle model maps the various activities performed on a
software product from its inception to retirement. Different life cycle models
may plan the necessary development activities to phases in different ways.
Thus, no element which life cycle model is followed, the essential activities
are contained in all life cycle models though the action may be carried out in
distinct orders in different life cycle models. During any life cycle stage, more
than one activity may also be carried out.
Need of SDLC
The development team must determine a suitable life cycle model for a
particular plan and then observe to it.
A software life cycle model describes entry and exit criteria for each phase.
A phase can begin only if its stage-entry criteria have been fulfilled. So
without a software life cycle model, the entry and exit criteria for a stage
cannot be recognized. Without software life cycle models, it becomes tough
for software project managers to monitor the progress of the project.
SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC framework
includes the following steps:
The stages of SDLC are as follows:
Stage1: Planning and requirement analysis
The senior members of the team perform it with inputs from all the
stakeholders and domain experts or SMEs in the industry.
Business analyst and Project organizer set up a meeting with the client to
gather all the data like what the customer wants to build, who will be the end
user, what is the objective of the product. Before creating a product, a core
understanding or knowledge of the product is very necessary.
For Example, A client wants to have an application which concerns money
transactions. In this method, the requirement has to be precise like what
kind of operations will be done, how it will be done, in which currency it will
be done, etc.
Once the required function is done, an analysis is complete with auditing the
feasibility of the growth of a product. In case of any ambiguity, a signal is set
up for further discussion.
The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project. This phase is the product of the
last two, like inputs from the customer and requirement gathering.
In this phase of SDLC, the actual development begins, and the programming
is built. The implementation of design begins concerning writing code.
Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters, debuggers,
etc. are used to develop and implement the code.
Stage5: Testing
Once the software is certified, and no bugs or errors are stated, then it is
deployed.
Stage7: Maintenance
Once when the client starts using the developed systems, then the real
issues come up and requirements to be solved from time to time.
This procedure where the care is taken for the developed product is known
as maintenance.
SDLC Models
Software Development life cycle (SDLC) is a spiritual model used in project management that
defines the stages include in an information system development project, from an initial
feasibility study to the maintenance of the completed application.
There are different software development life cycle models specify and design, which are
followed during the software development phase. These models are also called "Software
Development Process Models." Each process model follows a series of phase unique
to its type to ensure success in the step of software development.
The waterfall model is a continuous software development model in which development is seen
as flowing steadily downwards (like a waterfall) through the steps of requirements analysis,
design, implementation, testing (validation), integration, and maintenance.
Linear ordering of activities has some significant consequences. First, to identify the end of a
phase and the beginning of the next, some certification techniques have to be employed at the
end of each step. Some verification and validation usually do this mean that will ensure that the
output of the stage is consistent with its input (which is the output of the previous step), and that
the output of the stage is consistent with the overall requirements of the system.
RAD Model
RAD or Rapid Application Development process is an adoption of the waterfall model; it targets
developing software in a short period. The RAD model is based on the concept that a better
system can be developed in lesser time by using focus groups to gather system requirements.
o Business Modeling
o Data Modeling
o Process Modeling
o Application Generation
o Testing and Turnover
Spiral Model
The spiral model is a risk-driven process model. This SDLC model helps the group to
adopt elements of one or more process models like a waterfall, incremental, waterfall, etc. The
spiral technique is a combination of rapid prototyping and concurrency in design and
development activities.
Each cycle in the spiral begins with the identification of objectives for that cycle, the different
alternatives that are possible for achieving the goals, and the constraints that exist. This is the
first quadrant of the cycle (upper-left quadrant).
The next step in the cycle is to evaluate these different alternatives based on the objectives and
constraints. The focus of evaluation in this step is based on the risk perception for the project.
ADVERTISEMENT
The next step is to develop strategies that solve uncertainties and risks. This step may involve
activities such as benchmarking, simulation, and prototyping.
V-Model
In this type of SDLC model testing and the development, the step is planned in parallel. So, there
are verification phases on the side and the validation phase on the other side. V-Model joins by
Coding phase.
Incremental Model
The incremental model is not a separate model. It is necessarily a series of waterfall cycles. The
requirements are divided into groups at the start of the project. For each group, the SDLC model
is followed to develop software. The SDLC process is repeated, with each release adding more
functionality until all requirements are met. In this method, each cycle act as the maintenance
phase for the previous software release. Modification to the incremental model allows
development cycles to overlap. After that subsequent cycle may begin before the previous cycle
is complete.
Agile Model
Agile methodology is a practice which promotes continues interaction of development and
testing during the SDLC process of any project. In the Agile method, the entire project is divided
into small incremental builds. All of these builds are provided in iterations, and each iteration
lasts from one to three weeks.
Any agile software phase is characterized in a manner that addresses several key assumptions
about the bulk of software projects:
1. It is difficult to think in advance which software requirements will persist and which will change.
It is equally difficult to predict how user priorities will change as the project proceeds.
2. For many types of software, design and development are interleaved. That is, both activities
should be performed in tandem so that design models are proven as they are created. It is
difficult to think about how much design is necessary before construction is used to test the
configuration.
3. Analysis, design, development, and testing are not as predictable (from a planning point of view)
as we might like.
Iterative Model
It is a particular implementation of a software development life cycle that focuses on an initial,
simplified implementation, which then progressively gains more complexity and a broader
feature set until the final system is complete. In short, iterative development is a way of breaking
down the software development of a large application into smaller pieces.
This model works best for small projects with smaller size development team which are working
together. It is also useful for academic software development projects. It is an ideal model where
requirements are either unknown or final release date is not given.
Prototype Model
The prototyping model starts with the requirements gathering. The developer and the user meet
and define the purpose of the software, identify the needs, etc.
A 'quick design' is then created. This design focuses on those aspects of the
software that will be visible to the user. It then leads to the development of a
prototype. The customer then checks the prototype, and any modifications or
changes that are needed are made to the prototype.
Waterfall model
Winston Royce introduced the Waterfall Model in 1970.This model has five
phases: Requirements analysis and specification, design, implementation,
and unit testing, integration and system testing, and operation and
maintenance. The steps always follow in this order and do not overlap. The
developer must complete every phase before the next phase begins. This
model is named "Waterfall Model", because its diagrammatic
representation resembles a cascade of waterfalls.
ADVERTISEMENT
ADVERTISEMENT
Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software
process model that couples the iterative feature of prototyping with the
controlled and systematic aspects of the linear sequential model. It
implements the potential for rapid development of new versions of the
software. Using the spiral model, the software is developed in a series of
incremental releases. During the early iterations, the additional release may
be a paper model or prototype. During later iterations, more and more
complete versions of the engineered system are produced.
Objective setting: Each cycle in the spiral starts with the identification of
purpose for that cycle, the various alternatives that are possible for
achieving the targets, and the constraints that exists.
Planning: Finally, the next step is planned. The project is reviewed, and a
choice made whether to continue with a further period of the spiral. If it is
determined to keep, plans are drawn up for the next step of the project.
Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.
Disadvantages
1. If any changes happen in the midway, then the test documents along with
the required documents, has to be updated.
Prototype Model
The prototype model requires that before carrying out the development of
actual software, a working prototype of the system should be built. A
prototype is a toy implementation of the system. A prototype usually turns
out to be a very crude version of the actual system, possible exhibiting
limited functional capabilities, low reliability, and inefficient performance as
compared to actual software. In many instances, the client only has a
general view of what is expected from the software product. In such a
scenario where there is an absence of detailed information regarding the
input to the system, the processing needs, and the output requirement, the
prototyping model may be employed.
Steps of Prototype Model
1. Feasibility Study
2. Requirement Elicitation and Analysis
3. Software Requirement Specification
4. Software Requirement Validation
5. Software Requirement Management
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for
developing the software that is acceptable to users, flexible to change and
conformable to established standards.
Types of Feasibility:
ADVERTISEMENT
ADVERTISEMENT
The models used at this stage include ER diagrams, data flow diagrams
(DFDs), function decomposition diagrams (FDDs), data dictionaries, etc.
o Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for
modeling the requirements. DFD shows the flow of data through a system.
The system may be a company, an organization, a set of procedures, a
computer hardware system, a software system, or any combination of the
preceding. The DFD is also known as a data flow graph or bubble chart.
o Data Dictionaries: Data Dictionaries are simply repositories to store
information about all data items defined in DFDs. At the requirements stage,
the data dictionary should at least define customer data items, to ensure that
the customer and developers use the same definition and terminologies.
o Entity-Relationship Diagrams: Another tool for requirement specification
is the entity-relationship diagram, often called an "E-R diagram." It is a
detailed logical representation of the data for the organization and uses three
main constructs i.e. data entities, relationships, and their associated
attributes.
The business and technical environment of the system changes during the
development.
o Clear
o Correct
o Consistent
o Coherent
o Comprehensible
o Modifiable
o Verifiable
o Prioritized
o Unambiguous
o Traceable
o Credible source