Sunteți pe pagina 1din 27

Introduction to Software Engineering:

Software:
Software is set of instraction or program which provide the features and function when it is
executed.

Engineering:
Engineering is the process of using knowledge and principle to design and along the object.

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.

Objectives of Software Engineering:


Maintainability –

It should be feasible for the software to evolve to meet changing requirements.

Correctness –

A software product is correct, if the different requirements as specified in the SRS document
have been correctly implemented.

Reusability –

A software product has good reusability, if the different modules of the product can easily be
reused to develop new products.

Testability –

Here software facilitates both the establishment of test criteria and the evaluation of the
software with respect to those criteria.

Reliability –

It is an attribute of software quality. The extent to which a program can be expected to perform
its desired function, over an arbitrary time period.

Portability –

In this case, software can be transferred from one computer system or environment to another.
Well engineering software:
1) Operational

2) Transitional

3) Maintainances

Operational:
a) Correctness: The software which we are making should meet all the specifications stated by
the customer.

b) Usability/Learnability: The amount of efforts or time required to learn how to use the
software should be less. This makes the software user-friendly even for IT-illiterate people.
c) Integrity : Just like medicines have side-effects, in the same way a software may have a side-
effect i.e. it may affect the working of another application. But a quality software should not
have side effects.

d) Reliability : The software product should not have any defects. Not only this, it shouldn't fail
while execution.

e) Efficiency : This characteristic relates to the way software uses the available resources. The
software should make effective use of the storage space and execute command as per desired
timing requirements.

f) Security : With the increase in security threats nowadays, this factor is gaining importance.
The software shouldn't have ill effects on data / hardware. Proper measures should be taken to
keep data secure from external threats.

g) Safety : The software should not be hazardous to the environment/life.

Maintenance:
a) Maintainability : Maintenance of the software should be easy for any kind of user.

b) Flexibility : Changes in the software should be easy to make.

c) Extensibility : It should be easy to increase the functions performed by it.

d) Scalability : It should be very easy to upgrade it for more work(or for more number of users).

e) Testability : Testing the software should be easy.

f) Modularity : Any software is said to made of units and modules which are independent of
each other. These modules are then integrated to make the final software. If the software is
divided into separate independent parts that can be modified, tested separately, it has high
modularity.

Transitionality:
a) Interoperability : Interoperability is the ability of software to exchange information with other
applications and make use of information transparently.

b) Reusability : If we are able to use the software code with some modifications for different
purpose then we call software to be reusable.

c)Portability : The ability of software to perform same functions across all environments and
platforms, demonstrate its portability.
Software Enginerring development:

The activities involved in software development can broadly be divided into


two major categories first is construction and second is management.
• The construction activities are those that are directly related to the
construction or development of the software.
• While the management activities are those that complement the process
of construction in order to perform construction activities smoothly and
effectively.

Construction activities:
Some of the major construction activities are listed below.

• Requirement Gathering
• Design Development
• Coding
• Testing

Management activities:
Some of the major management activities are listed below.

• Project Planning and Management


• Configuration Management
• Software Quality Assurance
• Installation and Training

A Software Engineering Framework/layered:


·0 Software engineering - Layered technology

·1 Software engineering is a fully layered technology.

·2 To develop a software, we need to go from one layer to another.

·3 All these layers are related to each other and each layer demands the fulfillment of the
previous layer.

1.Quality focus

1. The characteristics of good quality software are:

2. Correctness of the functions required to be performed by the software.

3. Maintainability of the software

4. Integrity i.e. providing security so that the unauthorized user cannot access information
or data.

5. Usability i.e. the efforts required to use or operate the software.


2. Process

6. It is the base layer or foundation layer for the software engineering.

7. The software process is the key to keep all levels together.

8. It defines a framework that includes different activities and tasks.

9. In short, it covers all activities, actions and tasks required to be carried out for software
development.

3. Methods

10. The method provides the answers of all 'how-to' that are asked during the process.

11. It provides the technical way to implement the software.

12. It includes collection of tasks starting from communication, requirement analysis,


analysis and design modelling, program construction, testing and support.

4. Tools

13. The software engineering tool is an automated support for the software development.

14. The tools are integrated i.e the information created by one tool can be used by the other
tool.

For example: The Microsoft publisher can be used as a web designing tool.

Software development loop :


Problem Definition

In this stage we determine what is the problem against which we are going to develop software.
Here we try to completely comprehend the issues and requirements of the software system to
build.

Technical Development:

In this stage we try to find the solution of the problem on technical grounds and base our actual
implementation on it. This is the stage where a new system is actually developed that solves the
problem defined in the first stage.ss

Solution Integration:

If there are already developed system(s) available with which our new system has to interact
then those systems should also be the part of our new system. All those existing system(s)
integrate with our new system at this stage.
Status Quo:
After going through the previous three stages successfully, when we actually
deployed the new system at the user site then that situation is called status
quo. But once we get new requirements then we need to change the status
quo.

Software engineering phases:


There are 4 basic phases of software development:

Vision:
Here we determine why are we doing this thing and what are our business
objectives that we want to achieve.
Definition:
Here we actually realize or automate the vision developed in first phase.
Here we determine what are the activities and things involved.
Development:
Here we determine, what should be the design of the system, how will it be
implemented and how to test it.
Maintenance:
Here we control the change in system, whether that change is in the form of
enhancements or defect removal.
Correction, adaptation, enhancement For most large,
long lifetime software systems, maintenance costs
normally exceeds development cost by factors ranging
from 2 to 3.
Week No. 2,3:
1): Linear Sequential Model/Waterfall Model/Classic Life Cycle:
The linear sequential model, sometimes called the classic life cycle or the waterfall model,
suggests a systematic, sequential approach to software development that begins at the system
level and progresses through communication, planning, modeling, construction and deployment.
The following given figure illustrates the linear sequential model for software engineering. This is
the oldest paradigm of software engineering.

1. Communication :
This activity involves heavy communication with customers and other stakeholders in order to
gather requirements and other related activities.

2. Planning :
Here a plan to be followed will be created which will describe the technical tasks to be
conducted, risks, required resources, work schedule etc.

3. Modeling :
A model will be created to better understand the requirements and design to achieve these
requirements.

4. Construction :
Here the code will be generated and tested.

5. Deployment :
Here, a complete or partially complete version of the software is represented to the customers
to evaluate and they give feedbacks based on the evaluation.

Advantages of waterfall model

 The waterfall model is simple and easy to understand,


implement, and use.
 All the requirements are known at the beginning of the project,
hence it is
easy to manage.
 It avoids overlapping of phases because each phase is
completed at once.
 This model works for small projects because the requirements
are
understood very well.
 This model is preferred for those projects where the quality is
more
important as compared to the cost of the project.

Disadvantages of the waterfall model:

 This model is not good for complex and object oriented projects.
 It is a poor model for long projects.
 The problems with this model are uncovered, until the software
testing.
 The amount of risk is high.

2): Incremental Model


Incremental Model is a process of software development where requirements divided into
multiple standalone modules of the software development cycle. In this model, each module
goes through the requirements, design, implementation and testing phases. Every subsequent
release of the module adds function to the previous release. The process continues until the
complete system achieved.

Incremental Model:

The various phases of incremental model are as follows:

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.

When we use the Incremental Model?


When the requirements are superior.

A project has a lengthy development schedule.

When Software team are not very well skilled or trained.

When the customer demands a quick release of the product.

You can develop prioritized requirements first.

Advantage of Incremental Model


Errors are easy to be recognized.

Easier to test and debug

More flexible.

Simple to manage risk because it handled during its iteration.

The Client gets important functionality early.

Disadvantage of Incremental Model


Need for good planning

Total Cost is high.

Well defined module interfaces are needed.

3): What is RAD model- advantages, disadvantages and when to


use it?
RAD model is Rapid Application Development model.

It is a type of incremental model.

In RAD model the components or functions are developed in parallel as if they were mini
projects.

The developments are time boxed, delivered and then assembled into a working prototype.

This can quickly give the customer something to see and use and to provide feedback
regarding the delivery and their requirements.

The phases in the rapid application development (RAD) model are:

Business modeling:

The information flow is identified between various business functions.

Data modeling:

Information gathered from business modeling is used to define data objects that are needed for
the business.

Process modeling:

Data objects defined in data modeling are converted to achieve the business information flow to
achieve some specific business objective. Description are identified and created for CRUD of data
objects.

Application generation:

Automated tools are used to convert process models into code and the actual system.

Testing and turnover:

Test new components and all the interfaces.

Advantages of the RAD model:


Reduced development time.

Increases reusability of components

Quick initial reviews occur

Encourages customer feedback

Integration from very beginning solves a lot of integration issues.

Disadvantages of RAD model:


Depends on strong team and individual performances for identifying business requirements.

Only system that can be modularized can be built using RAD

Requires highly skilled developers/designers.

High dependency on modeling skills

Inapplicable to cheaper projects as cost of modeling and automated code generation is very
high.

When to use RAD model:

RAD should be used when there is a need to create a system that can be modularized in 2-3
months of time.
It should be used if there’s high availability of designers for modeling and the budget is high
enough to afford their cost along with the cost of automated code generating tools.

RAD SDLC model should be chosen only if resources with high business knowledge are available
and there is a need to produce the system in a short span of time (2-3 months).

Prototyping Model in Software Engineering: Methodology,


Process, Approach?
What is Software Prototyping Model?
Prototype methodology is defined as a Software Development model in which a prototype is
built, test, and then reworked when needed until an acceptable prototype is achieved. It also
creates a base to produce the final system.

Software prototyping model works best in scenarios where the project's requirement are not
known. It is an iterative, trial, and error method which take place between the developer and
the client.

Prototyping Model Phases


Prototyping Model has following six SDLC phases as follow:

Step 1: Requirements gathering and analysis

A prototyping model starts with requirement analysis. In this phase, the requirements of the
system are defined in detail. During the process, the users of the system are interviewed to know
what is their expectation from the system.

Step 2: Quick design

The second phase is a preliminary design or a quick design. In this stage, a simple design of the
system is created. However, it is not a complete design. It gives a brief idea of the system to the
user. The quick design helps in developing the prototype.

Step 3: Build a Prototype

In this phase, an actual prototype is designed based on the information gathered from quick
design. It is a small working model of the required system.

Step 4: Initial user evaluation

In this stage, the proposed system is presented to the client for an initial evaluation. It helps to
find out the strength and weakness of the working model. Comment and suggestion are
collected from the customer and provided to the developer.

Step 5: Refining prototype

If the user is not happy with the current prototype, you need to refine the prototype according
to the user's feedback and suggestions.

This phase will not over until all the requirements specified by the user are met. Once the user is
satisfied with the developed prototype, a final system is developed based on the approved final
prototype.

Step 6: Implement Product and Maintain

Once the final system is developed based on the final prototype, it is thoroughly tested and
deployed to production. The system undergoes routine maintenance for minimizing downtime
and prevent large-scale failures.

Types of Prototyping Models

Four types of Prototyping models are:

15. Rapid Throwaway prototypes

16. Evolutionary prototype

17. Incremental prototype

18. Extreme prototype

Rapid Throwaway Prototype

Rapid throwaway is based on the preliminary requirement. It is quickly developed to show how
the requirement will look visually. The customer's feedback helps drives changes to the
requirement, and the prototype is again created until the requirement is baselined.

In this method, a developed prototype will be discarded and will not be a part of the ultimately
accepted prototype. This technique is useful for exploring ideas and getting instant feedback for
customer requirements.

Evolutionary Prototyping

Here, the prototype developed is incrementally refined based on customer's feedback until it is
finally accepted. It helps you to save time as well as effort. That's because developing a
prototype from scratch for every interaction of the process can sometimes be very frustrating.

This model is helpful for a project which uses a new technology that is not well understood. It is
also used for a complex project where every functionality must be checked once. It is helpful
when the requirement is not stable or not understood clearly at the initial stage.

Incremental Prototyping

In incremental Prototyping, the final product is decimated into different small prototypes and
developed individually. Eventually, the different prototypes are merged into a single product.
This method is helpful to reduce the feedback time between the user and the application
development team.

Extreme Prototyping:

Extreme prototyping method is mostly used for web development.

It is consists of three sequential phases.

19. Basic prototype with all the existing page is present in the HTML format.

20. You can simulate data process using a prototype services layer.

21. The services are implemented and integrated into the final prototype.

Advantages of the Prototyping Model


Here, are important pros/benefits of using Prototyping models:

22. Users are actively involved in development. Therefore, errors can be detected in the
initial stage of the software development process.

23. Missing functionality can be identified, which helps to reduce the risk of failure as
Prototyping is also considered as a risk reduction activity.

24. Helps team member to communicate effectively

25. Customer satisfaction exists because the customer can feel the product at a very early
stage.
26. There will be hardly any chance of software rejection.

27. Quicker user feedback helps you to achieve better software development solutions.

28. Allows the client to compare if the software code matches the software specification.

29. It helps you to find out the missing functionality in the system.

30. It also identifies the complex or difficult functions.

31. Encourages innovation and flexible designing.

32. It is a straightforward model, so it is easy to understand.

33. No need for specialized experts to build the model

34. The prototype serves as a basis for deriving a system specification.

35. The prototype helps to gain a better understanding of the customer's needs.

36. Prototypes can be changed and even discarded.

37. A prototype also serves as the basis for operational specifications.

38. Prototypes may offer early training for future users of the software system.

Disadvantages of the Prototyping Model


Here, are important cons/drawbacks of prototyping model:

39. Prototyping is a slow and time taking process.

40. The cost of developing a prototype is a total waste as the prototype is ultimately thrown
away.

41. Prototyping may encourage excessive change requests.

42. Some times customers may not be willing to participate in the iteration cycle for the
longer time duration.

43. There may be far too many variations in software requirements when each time the
prototype is evaluated by the customer.

44. Poor documentation because the requirements of the customers are changing.

45. It is very difficult for software developers to accommodate all the changes demanded by
the clients.
46. After seeing an early prototype model, the customers may think that the actual product
will be delivered to him soon.

47. The client may lose interest in the final product when he or she is not happy with the
initial prototype.

48. Developers who want to build prototypes quickly may end up building sub-standard
development solutions.

What is Spiral model- advantages, disadvantages and when to use it?


The spiral model is similar to the incremental model, with more emphasis placed on risk analysis.

The spiral model has four phases:

Planning, Risk Analysis, Engineering and Evaluation.

A software project repeatedly passes through these phases in iterations (called Spirals in this
model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is
assessed. Each subsequent spirals builds on the baseline spiral. Its one of the software
development models like Waterfall, Agile, V-Model.

Planning Phase:

Requirements are gathered during the planning phase. Requirements like ‘BRS’ that is ‘Bussiness
Requirement Specifications’ and ‘SRS’ that is ‘System Requirement specifications’.

What Is Spiral Model Risk Analysis:

In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A
prototype is produced at the end of the risk analysis phase. If any risk is found during the risk
analysis then alternate solutions are suggested and implemented.

Engineering Phase:

In this phase software is developed, along with testing at the end of the phase. Hence in this
phase the development and testing is done.

Evaluation phase:

This phase allows the customer to evaluate the output of the project to date before the project
continues to the next spiral.

Diagram of Spiral model


Advantages of Spiral model:
49. High amount of risk analysis hence, avoidance of Risk is enhanced.

50. Good for large and mission-critical projects.

51. Strong approval and documentation control.

52. Additional Functionality can be added at a later date.

53. Software is produced early in the software life cycle.

Disadvantages of Spiral model:


54. Can be a costly model to use.

55. Risk analysis requires highly specific expertise.

56. Project’s success is highly dependent on the risk analysis phase.

57. Doesn’t work well for smaller projects.

When to use Spiral model:


58. When costs and risk evaluation is important
59. For medium to high-risk projects

60. Long-term project commitment unwise because of potential changes to economic


priorities

61. Users are unsure of their needs

62. Requirements are complex

63. New product line

64. Significant changes are expected (research and exploration)

What is Agile?
Agile model believes that every project needs to be handled differently and the existing methods
need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time
boxes (small time frames) to deliver specific features for a release.

Iterative approach is taken and working software build is delivered after each iteration. Each
build is incremental in terms of features; the final build holds all the features required by the
customer.

SDLC Agile Model


The Agile thought process had started early in the software development and started becoming
popular with time due to its flexibility and adaptability.

Following are the Agile Manifesto principles :

Individuals and interactions

In Agile development, self-organization and motivation are important, as are interactions like co-
location and pair programming.

Working software

Demo working software is considered the best means of communication with the customers to
understand their requirements, instead of just depending on documentation.
Customer collaboration

As the requirements cannot be gathered completely in the beginning of the project due to
various factors, continuous customer interaction is very important to get proper product
requirements.

Responding to change

Agile Development is focused on quick responses to change and continuous development.

The advantages of the Agile Model are as follows

Is a very realistic approach to software development.

Promotes teamwork and cross training.

Functionality can be developed rapidly and demonstrated.

Resource requirements are minimum.

Suitable for fixed or changing requirements

Delivers early partial working solutions.

Good model for environments that change steadily.

Minimal rules, documentation easily employed.

Enables concurrent development and delivery within an overall planned context.

Little or no planning required.

Easy to manage.

Gives flexibility to developers.

The disadvantages of the Agile Model are as follows

65. Not suitable for handling complex dependencies.

66. More risk of sustainability, maintainability and extensibility.


67. An overall plan, an agile leader and agile PM practice is a must without which it will not
work.

68. Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.

69. Depends heavily on customer interaction, so if customer is not clear, team can be driven
in the wrong direction.

70. There is a very high individual dependency, since there is minimum documentation
generated.

71. Transfer of technology to new team members may be quite challenging due to lack of
documentation.

S-ar putea să vă placă și