Professional Documents
Culture Documents
Unit 1 Se
Unit 1 Se
Deemed to be University
BY
Dr. Preethi. N
UNIT-1
Software Engineering
• 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.
SOFTWARE ENGINEERING
Definitions
IEEE defines
(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 the above statement.
Software Paradigms
• Software paradigms refer to the methods and steps, which are taken while
designing the software.
• Programming paradigm is a subset of Software design paradigm which is further
a subset of Software development paradigm.
The need of software engineering arises because of higher rate of change in user requirements
and environment on which the software is working.
1. Large software - If the software becomes large, engineering has to step to give it a scientific
process.
2. Scalability- If the software process were not based on scientific and engineering concepts, it
would be easier to re-create new software than to scale an existing one.
3. Cost- As hardware industry has shown its skills and huge manufacturing has lower down the
price of computer and electronic hardware. But, cost of the software remains high if proper
process is not adapted.
4. Dynamic Nature- Always growing and adapting nature of the software hugely depends upon the
environment in which the user works. If the nature of software is always changing, new
enhancements need to be done in the existing one. This is where the software engineering plays a
good role.
5. Quality Management- Better process of software development provides better and quality
software product.
Excellence and Service
CHRIST
Deemed to be University
1.Reduces complexity:
• Big software is always complicated and challenging to progress.
• Software engineering has a great solution to reduce the complication of any project.
• Software engineering divides big problems into various small issues.
• And then start solving each small issue one by one. All these small problems are
solved independently to each other.
2. To minimize software cost:
• Software needs a lot of hard work and software engineers are highly paid experts.
• A lot of manpower is required to develop software with a large number of codes.
• But in software engineering, programmers project everything and decrease all those
things that are not needed.
• In turn, the cost for software productions becomes less as compared to any software
that does not use software engineering method.
Excellence and Service
CHRIST
Deemed to be University
3. To decrease time:
• Anything that is not made according to the project always wastes time.
• And if you are making great software, then you may need to run many codes to get the definitive
running code.
• This is a very time-consuming procedure, and if it is not well handled, then this can take a lot of time.
• So if you are making your software according to the software engineering method, then it will decrease a
lot of time.
4. Handling big projects:
• Big projects are not done in a couple of days, and they need lots of patience, planning, and management.
• And to invest six and seven months of any company, it requires heaps of planning, direction, testing, and
maintenance.
• No one can say that he has given four months of a company to the task, and the project is still in its first
stage.
• Because the company has provided many resources to the plan and it should be completed. So to handle
a big project without any problem, the company has to go for a software engineering method.
5. Reliable software:
• Software should be secure, means if you have delivered the software, then it should
work for at least its given time or subscription.
• And if any bugs come in the software, the company is responsible for solving all
these bugs.
• Because in software engineering, testing and maintenance are given, so there is no
worry of its reliability.
6. Effectiveness:
• Effectiveness comes if anything has made according to the standards.
• Software standards are the big target of companies to make it more effective.
• So Software becomes more effective in the act with the help of software engineering.
2. Transitional
This aspect is important when the software is moved from one platform to another:
• Portability
• Interoperability
• Reusability
• Adaptability
3. Maintenance
This aspect briefs about how well the software has the capabilities to maintain itself in the ever-changing
environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
• 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
Excellence and Service
CHRIST
Deemed to be University
SDLC
Communication
• The user contacts the service provider and tries to negotiate the terms, submits
the request to the service providing organization in writing.
Requirement Gathering
• This step onwards the software development team works to carry on the project.
• The team holds discussions with various stakeholders from problem domain and
tries to bring out as much information as possible on their requirements.
• The requirements are contemplated and segregated into user requirements,
system requirements and functional requirements.
• The requirements are collected using a number of practices as given -
System Analysis
• At this step the developers decide a roadmap of their plan and try to bring up the
• best software model suitable for the project.
• System analysis includes understanding of software product limitations, learning system related
problems or changes to be done in existing systems beforehand, identifying and addressing the
impact of project on organization and personnel etc.
• The project team analyzes the scope of the project and plans the schedule and resources accordingly.
Software Design
• Next step is to bring down whole knowledge of requirements and analysis on the
desk and design the software product.
• The inputs from users and information gathered in requirement gathering phase are the inputs of this
step. The output of this step comes in the form of two designs; logical design, and physical design.
• Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams, and in
some cases pseudo codes.
Coding
• This step is also known as programming phase.
• The implementation of software design starts in terms of writing program code in the
suitable programming language and developing error-free executable programs
efficiently.
Testing
• An estimate says that 50% of whole software development process should be tested.
Errors may ruin the software from critical level to its own removal.
• Software testing is done while coding by the developers and thorough testing is
conducted by testing experts at various levels of code such as module testing, program
testing, product testing, in-house testing, and testing the product at user’s end.
• Early discovery of errors and their remedy is the key to reliable software.
Integration
• Software may need to be integrated with the libraries, databases, and other program(s).
This stage of SDLC is involved in the integration of software with outer world entities.
Implementation
• This means installing the software on user machines.
• At times, software needs post-installation configurations at user end.
• Software is tested for portability and adaptability and integration related issues are solved during
implementation.
Operation and Maintenance
• This phase confirms the software operation in terms of more efficiency and less errors.
• If required, the users are trained on, or aided with the documentation on how to operate the software and
how to keep the software operational.
• The software is maintained timely by updating the code according to the changes taking place in user end
environment or technology.
• This phase may face challenges from hidden bugs and real-world unidentified problems.
Waterfall Model
Waterfall Model
• This model assumes that everything is carried out and taken place perfectly as
planned in the previous stage and there is no need to think about the past issues
that may arise in the next phase.
• This model does not work smoothly if there are some issues left at the previous step.
• The sequential nature of model does not allow us to go back and undo or redo our
actions.
• This model is best suited when developers already have designed and developed
similar software in the past and are aware of all its domains.
it is minimal.
•The requirements are simple and explicitly declared; they remain unchanged during
the entire project development.
•The start and end points for each phase is fixed, which makes it easy to cover
progress.
•The release date for the complete product, as well as its final cost, can be determined
before development.
•It gives easy to control and clarity for the customer due to a strict reporting system.
• In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
• This model cannot accept the changes in requirements during development.
• It becomes tough to go back to the phase. For example, if the application has now
shifted to the coding phase, and there is a change in requirement, It becomes tough
to go back and change it.
• Since the testing done at a later stage, it does not allow identifying the challenges and
risks in the earlier phase, so the risk reduction strategy is difficult to prepare.
Incremental Model
Incremental Model
1. Requirement analysis:
• In the first phase of the incremental model, the product analysis expertise identifies
the requirements.
• And the system functional requirements are understood by the requirement analysis
team.
• To develop the software under the incremental model, this phase performs a crucial
role.
2. Design & Development:
• In this phase of the Incremental model of SDLC, the design of the system
functionality and the development method are finished with success.
• When software develops new practicality, the incremental model uses style and
development phase.
3. Testing:
• In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality.
• In the testing phase, the various methods are used to test the behavior of each task.
4. Implementation:
• Implementation phase enables the coding phase of the development system.
• It involves the final coding that design in the designing and development phase and
tests the functionality in the testing phase.
• After completion of this phase, the number of the product working is enhanced and
upgraded up to the final system product
Spiral Model
Spiral Model
Spiral Model
• The exact number of phases needed to develop the product can be varied by the
project manager depending upon the project risks.
• As the project manager dynamically determines the number of phases, so the project
manager has an important role to develop a product using the spiral model.
• The Radius of the spiral at any point represents the expenses(cost) of the project so
far, and the angular dimension represents the progress made so far in the current
phase.
1.Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to the
risk analysis and risk handling at every phase.
2.Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
3.Flexibility in Requirements: Change requests in the Requirements at later phase can
be incorporated accurately by using this model.
4.Customer Satisfaction: Customer can see the development of the product at the early
phase of the software development and thus, they habituated with the system by using it
before completion of the total product.
1.Complex: The Spiral Model is much more complex than other SDLC models.
2.Expensive: Spiral Model is not suitable for small projects as it is expensive.
3.Too much dependability on Risk Analysis:
• The successful completion of the project is very much dependent on Risk Analysis.
• Without very highly experienced experts, it is going to be a failure to develop a
project using this model.
4. Difficulty in time management:
• As the number of phases is unknown at the start of the project, so time estimation is
very difficult.
• At the beginning of each pass of the spiral, the negotiation activities are carried out in a WIN-WIN spiral
model.
• Various activities that can be carried out in a WIN-WIN spiral model are shown in the following diagram –
• “The original spiral model uses a cyclic approach to develop increasingly detailed
elaborations of a software system’s definition, culminating in incremental releases of
the system’s operational capability.
3.Negotiations of stakeholders struggling vigorously for win condition. Software project team conciliate for a win-
win result with concern. Then determine next level objectives, constraints, and alternatives.
4.Evaluation of the process and product and then analyzing and resolving or reducing the risks to make it easy.
5.Defining the next level of product and process for proper working.
7.Reviewing of the product and giving the necessary and important comments on it.
The resulting process uses the “Theory W” of win-win model approach to converge on
a system’s next level objectives, constraints, and alternatives.
• Feedback is provided by the users on the product for the planning stage of the next
cycle and the development team responds, often by changing the product, plan or
process.
• Therefore, the software product evolves with time.
• All the models have the disadvantage that the duration of time from start of the
project to the delivery time of a solution is very high.
• Evolutionary model solves this problem in a different approach.
Advantages:
•In evolutionary model, a user gets a chance to experiment partially developed system.
•It reduces the error because the core modules get tested thoroughly.
Disadvantages:
•Sometimes it is hard to divide the problem into several versions that would be acceptable to
the customer which can be incrementally implemented and delivered.
Prototype Model
Prototype Model
Prototype Model
• The Prototyping Model is one of the most popularly used Software Development
Life Cycle Models (SDLC models).
• This model is used when the customers do not know the exact project requirements
beforehand.
• In this model, a prototype of the end product is first developed, tested and refined as
per customer feedback repeatedly till a final acceptable prototype is achieved which
forms the basis for developing the final product.
Prototype Model
• In this process model, the system is partially implemented before or during the
analysis phase thereby giving the customers an opportunity to see the product early
in the life cycle.
• The process starts by interviewing the customers and developing the incomplete
high-level paper model.
• This document is used to build the initial prototype supporting only the basic
functionality as desired by the customer.
• Once the customer figures out the problems, the prototype is further refined to
remove them.
• The process continues until the user approves the prototype and finds the working
model to be satisfactory.
Prototype Model
Prototype Model
• This technique offers a useful method of exploring ideas and getting customer
feedback for each of them.
• In this method, a developed prototype need not necessarily be a part of the ultimately
accepted prototype.
• Customer feedback helps in preventing unnecessary design faults and hence, the
final prototype developed is of better quality.
Prototype Model
B) Evolutionary Prototyping –
• In this method, the prototype developed initially is incrementally refined on the basis
of customer feedback till it finally gets accepted.
• In comparison to Rapid Throwaway Prototyping, it offers a better approach which
saves time as well as effort.
• This is because developing a prototype from scratch for every iteration of the process
can sometimes be very frustrating for the developers.
Prototype Model
C) Incremental Prototyping –
• In this type of incremental Prototyping, the final expected product is broken into different
small pieces of prototypes and being developed individually.
• In the end, when all individual pieces are properly developed, then the different prototypes
are collectively merged into a single final product in their predefined order.
• It’s a very efficient approach which reduces the complexity of the development process,
where the goal is divided into sub-parts and each sub-part is developed individually.
• The time interval between the project begin and final delivery is substantially reduced
because all parts of the system are prototyped and tested simultaneously.
• Of course, there might be the possibility that the pieces just not fit together due to some lack
ness in the development phase – this can only be fixed by careful and complete plotting of
the entire system before prototyping starts.
Prototype Model
Prototype Model
Advantages –
• The customers get to see the partial product early in the life cycle. This ensures a
greater level of customer satisfaction and comfort.
• New requirements can be easily accommodated as there is scope for refinement.
• Missing functionalities can be easily figured out.
• Errors can be detected much earlier thereby saving a lot of effort and cost, besides
enhancing the quality of the software.
• The developed prototype can be reused by the developer for more complicated
projects in the future.
• Flexibility in design.
Prototype Model
Use –
• The Prototyping Model should be used when the requirements of the product are not
clearly understood or are unstable.
• It can also be used if requirements are changing quickly.
• This model can be successfully used for developing user interfaces, high technology
software-intensive systems, and systems with complex algorithms and interfaces.
• It is also a very good choice to demonstrate the technical feasibility of the product.
1.Objects:
• All entities involved in the solution design are known as objects.
• For example, person, banks, company, and users are considered as objects.
• Every entity has some attributes associated with it and has some methods to perform on the attributes.
2.Classes:
• A class is a generalized description of an object.
• An object is an instance of a class.
• A class defines all the attributes, which an object can have and methods, which represents the functionality
of the object.
3.Messages:
• Objects communicate by message passing.
• Messages consist of the integrity of the target object, the name of the requested operation, and any other
action needed to perform the function.
• Messages are often implemented as procedure or function calls.
4.Abstraction
• In object-oriented design, complexity is handled using abstraction.
• Abstraction is the removal of the irrelevant and the amplification of the essentials.
5. Encapsulation:
• Encapsulation is also called an information hiding concept.
• The data and operations are linked to a single unit.
• Encapsulation not only bundles essential information of an object together but also restricts access to the
data and methods from the outside world.
6. Inheritance:
• OOD allows similar classes to stack up in a hierarchical manner where the lower or sub-classes can
import, implement, and re-use allowed variables and functions from their immediate super classes.
• This property of OOD is called an inheritance. This makes it easier to define a specific class and to
create generalized classes from specific ones.
7. Polymorphism:
• OOD languages provide a mechanism where methods performing similar tasks but vary in arguments,
can be assigned the same name.
• This is known as polymorphism, which allows a single interface is performing functions for different
types.
• Depending upon how the service is invoked, the respective portion of the code gets executed.
Types of Models:
There are 3 types of models in the object oriented modeling and design are:
• Class Model,
• State Model, and
• Interaction Model.
1.Class Model:
The class model shows all the classes present in the system.
• The class model shows the attributes and the behavior associated with the objects.
• The class diagram is used to show the class model.
• The class diagram shows the class name followed by the attributes followed by the
functions or the methods that are associated with the object of the class.
• Goal in constructing class model is to capture those concepts from the real world that
are important to an application.
Excellence and Service
CHRIST
Deemed to be University
2.State Model:
• State model describes those aspects of objects concerned with time and the sequencing of operations –
events that mark changes, states that define the context for events, and the organization of events and
states.
• Actions and events in a state diagram become operations on objects in the class model. State diagram
describes the state model.
3. Interaction Model:
Interaction model is used to show the various interactions between objects, how the objects collaborate to
achieve the behavior of the system as a whole.
The following diagrams are used to show the interaction model:
1. Use Case Diagram
2. Sequence Diagram
3. Activity Diagram
Disadvantages
•Relies heavily on recall rather than recognition.
•Navigation is often more difficult.
•Graphical User Interface (GUI): GUI relies much more heavily on the mouse. A
typical example of this type of interface is any versions of the Windows operating
systems.