Se Chap 1
Se Chap 1
Software is: 1. Instructions that when executed provide desired features, function,
and performance; 2. Data structures that enable the programs to adequately
manipulate information, and 3. Descriptive information in both hard copy and
virtual forms that describes the operation and use of the programs.
Layered Technology
Software engineering is a layered technology.
To develop a software, we need to go from one layer to another.
All these layers are related to each other and each layer demands the fulfillment
of the previous layer
The layers of software engineering as shown in the above diagram are:-
Tools
Methods
Process
A Quality Focus
A Quality Focus
- It is a process improvement culture which leads to development of increasingly
more effective approaches to software engineering.
- It provides integrity so that data can be accessed by authorized person.
- It focuses on maintablility and usability.
Process
- The foundation of software engineering is process layer.
- It binds all layers together enabling development of software on time.
- Process defies a framework that must be established for effective delivery of
software enginerring technology.
Methods
- Methods provide technical - how to buliding software.
- It includes tasks like communication, requirements analysis, design modeling,
program construction, testing and support.
Tools
- Tools provide automated or semi automated support for the process and methods.
- Tools are integrated which means information created by one tool can be used by
other.
Types of Software
System Software
- System software is a collection of programs written to service other programs.
- Few examples of system software are compilers, editors and file management
utilities used to process complex
but determinate information structure.
Ex DOS, WINDOWS.
Engineering Software
- Engineering Software are characterised by "number crunching "algorithms.
- However modern applications are moving away from conventional numerical
algorithms.
Ex CAD, CAM
Embedded Software
- Embedded software is used to control product/ system for end-user.
- It can perform very limited functions and provide control capability.
Ex Microwave, Washing Machine.
Real Time Software
- Real time software controls real world events as they occur.
- It includes data gathering, analysis, control and monitoring component.
Ex Airways, Railways Reservation System.
Artificial Intelligence Software
- In this software, non numerical algorithms are used to solve complex problems
which cannot be handeled by computation.
- It is used in games, robotics, expert systems, artificial neural networks,
pattern matching etc.
Waterfall model
The waterfall model is a traditional, sequential approach to software development
where stages are completed one after the other,
starting from customer requirements and progressing through communication,
planning, modeling, construction, and deployment.
The waterfall model needs all project requirements to be clearly stated at the
beginning. This makes it easier to explain
the early stages of the project to customers.
It's suitable for projects with fixed requirements and linear progress but not for
fast-paced environment with frequent changes.
Advantages
Simple and easy to understand.
Good for projects with fixed requirements.
Step by step approach.
DisAdvantages
Inflexible and not adaptable to changes.
Not good model for complex and obect oriented `
Not suitable for dynamic projects.
High amount of risk and uncertainty.
Quality control Issues detected and fixed at the end of the Early detection
and fixing in each sprint.
project.
Extreme programming
Extreme programming is a lightweight, efficient, low-risk, flexible, predictable,
scientific, and fun way to develop software. eXtreme Programming (XP) was conceived
and developed to address the specific needs of software development by small teams
in the face of vague and changing requirements. Extreme Programming is one of the
Agile software development methodologies. It provides values and principles to
guide the team’s behavior. The team is expected to self-organize. Extreme
Programming provides specific core practices.
Where
- Each practice is simple and self-complete.
- Combination of practices produces more complex and emergent behavior.
Extreme Programming is based on the following values-
- Communication
- Simplicity
- Feedback
- Courage
- Respect
Extreme Programming involves-
- 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 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.
Extreme Programming solves the following problems often faced in the software
development projects-
- Slipped schedules: Short and achievable development cycles ensure timely
deliveries.
- Cancelled projects: Focus on continuous customer involvement. ensures
transparency with the customer and immediate resolution of any issues.
- Costs incurred in changes: Extensive and ongoing testing makes sure the changes
do not break the existing functionality. A running working system always ensures
sufficient time for accommodating changes such that the current operations are not
affected.
- Production and post-delivery defects: Emphasis is on the unit tests to detect
and fix the defects early.
- Misunderstanding the business and/or domain: Making the customer a part of the
team ensures constant communication and clarifications.
- Business changes: Changes are inevitable and are accommodated at any point of
time.
- Staff turnover: Intensive team collaboration ensures enthusiasm and goodwill.
Cohesion of multi-disciplines fosters the team spirit.
Extreme Programming takes the effective principles and practices to extreme levels.
Extreme Programming
- Code reviews are effective as the code is reviewed all the time.
- Testing is effective as there is continuous regression and testing.
- Design is effective as everybody needs to do refactoring daily.
- Integration testing is important as integrate and test several times a day.
- Short iterations are effective as the planning game for release planning and
iteration planning
Agile Model
The Agile model is an iterative and flexible approach to software development that
prioritizes collaboration, adaptability,
and customer feedback.
Breaks down work in smaller parts called sprints.
It includes frequent testing and regular adaptation to changing requirements.
It promotes collaboration engineers allowing for faster development cycles and
greater responsiveness to customer needs.
Advantages
It reduces total development time.
Flexible and Adaptable to changes.
Increased customer involvement.
Continuous Improvement.
DisAdvantages
Less Documentation
Adapting to agile mindset takes time and efforts.
Unpredictable timelines
Scrum
Scrum is a type of agile framework. It is a framework within which people can
address complex adaptive problem
while productivity and creativity of delivering product is at highest possible
values.
Scrum uses Iterative process.
Scrum emphasizes self organization.
Scrum is simple to understand.
Scrum framework help team to work together.