Professional Documents
Culture Documents
S O F T WA R E E N G I N E E R I N G
➢ All software projects have to be professionally managed and developed, and different
techniques are appropriate for different types of system.
• Ex., games should always be developed using a series of prototypes whereas safety critical
control systems require a complete and analyzable specification to be developed.
• Can’t be said that one method is better than another.
➢ The web has led to the availability of software services and the possibility of developing
highly distributed service-based systems.
➢ Web-based systems development has led to important advances in programming languages
and software reuse.
E S S E N T I A L AT T R I B U T E S O F G O O D S O F T WA R E
Acceptability
• Software must be acceptable to the type of users for which it is designed.
• It must be understandable, usable and compatible with other systems that user choses to use
Efficiency
• Software should not make wasteful use of system resources such as memory and processor
cycles.
• Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.
o The costs of software on a PC are often greater than the hardware cost.
o For systems with a long life, maintenance costs may be several times development costs.
Customized products
• Software that is commissioned by a specific customer to meet their own needs.
• Examples – factory production control systems, traffic monitoring systems etc.
Generic products
• The specification of what the software should do is owned by the software developer and
decisions on software change are made by the developer.
Customized products
• The specification of what the software should do is owned by the customer for the
software and they make decisions on software changes that are required.
• Engineering discipline
o Using appropriate theories and methods to solve problems bearing in mind organizational and financial
constraints.
• All aspects of software production
o Not just technical process of development.
o Also project management and the development of tools, methods etc. to support software production.
• More and more, individuals and society rely on advanced software systems.
• Need to be able to produce reliable and trustworthy systems economically and quickly.
• It is usually cheaper, in the long run, to use software engineering methods and techniques for
software systems rather than just write the programs as if it was a personal programming
project.
• For most types of system, the majority of costs are the costs of changing the software after it
has gone into use.
A P P L I C AT I O N T Y P E S
Stand-alone applications
• These are application systems that run on a local computer, such as a PC.
• They include all necessary functionality and do not need to be connected to a network.
Entertainment systems
• These are systems that are primarily for personal use and which are intended to entertain the
user.
Systems of systems
• These are systems that are composed of a number of other software systems.
• Software Design
System
Design Specifications
Design
Coded and
System
Tested System
Development
Begin building
System System converted
new system Implementation Users trained
System
Maintenance
Operational System
Documentation completed
• Key question: “What systems are required to support the strategic goals of
your organization?”
• generate proposals to build new information systems when they are having a
difficult time performing their jobs.
• Companies cannot develop all proposed IS, so they look into the critical
success factors.
Project plan - defines the what, when, and who questions of system
development including all activities to be performed, the individuals, or
resources, who will perform the activities, and the time required to
complete each activity.
• Project milestones - represent key dates for which you need a certain group of
activities performed.
• IT specialists
working together
• To understand, &
• Document
3. Sign-off - the knowledge workers’ actual signatures indicating they approve all of the
business requirements.
This includes
Technical architecture –
• Time
• Cost
• Technical feasibility
• Flexibility
(Ts.) SSS Shameem Software Engineering, MIU
S E V E N P H A S E S I N T H E S D LC
• Reports
• Programs
• databases
• the ability to model the information system screens for an entire system.
• Flowcharting
Take all detailed design documents from the design phase and transform them
into an actual system.
• Verifies that the system works and meets all of the business requirements
defined in the analysis phase.
Test conditions - detailed steps; system must perform along with expected results of
each step.
Testing is critical
• Must have test plans
• Write the test conditions
Implementation phase
• Distribute the system to all of the knowledge workers, and they begin using the
system to perform their everyday jobs.
Maintenance phase
• It is the final phase of the system development effort
• Monitor and support the new system to ensure it continues to meet
the business goals.
• When we describe and discuss processes, we usually talk about the activities in these processes
such as specifying a data model, designing a user interface, etc. and the ordering of these
activities.
• Process descriptions may also include:
▪ Roles, which reflect the responsibilities of the people involved in the process;
▪ Pre- and post-conditions, which are statements that are true before and after a process
activity has been passed or a product produced.
• Plan-driven processes are processes where all of the process activities are planned in
advance and progress is measured against this plan.
• In agile processes, planning is incremental and it is easier to change the process to reflect
changing customer requirements.
• In practice, most practical processes include elements of both plan-driven and agile approaches.
• There are no right or wrong software processes.
• Focus on tradeoffs
• Focus on goals
• Hierarchical decomposition
5. Changing technology
• Missing Requirement?
• Forgetting to include into the system the calculation of a student grade point average
• The project manager must track the status of each activity and adjust the project plan if a activity is
added or taking longer than expected.
• Feature creep - occurs when extra features added that were not part of initial requirements.
• Incomplete specifications
• No control/no framework
• Too time-consuming
• Technology changes so fast that it’s almost impossible to deliver an information system without feeling
the pain of changing technology.
• Project plan is the road map you follow during the development of the system.
• Managing, revising, and updating the project plan is the hard part.
• First thing individuals tend to do when a project falls behind schedule is to start skipping phases in SDLC.
• Skipping any of the phases is sure to lead to further complications, and system failure.
• Size, (person-years)
• Budget,
• Duration.
• Scrum
• Waterfall • Cleanroom
• Prototype • RAD
model
• DSDM
• Incremental
• RUP
• Iterative
• XP
• Spiral
• Lean
• Agile
• Dual Vee Model
• V-Model
• TDD
• FDD
CODE-AND-FIX
• Starts with an informal general product idea, and just develops code until a
• No administrative overhead
• Useful for small “proof of concept” projects, e.g. as part of risk reduction.
• No visibility/control
• No resource planning
• No deadlines
W AT E R FA L L
• If a bug found earlier, it is much cheaper (and more effective) to fix than bugs found
in a later phase
• Client does not explicitly know what he or she wants, at the beginning
P ROTOT Y P I N G
• Creating prototypes of software applications i.e. incomplete versions of the software program
being developed
• A prototype typically simulates only a few aspects of, and may be completely different from, the
final product.
• Key idea: Customers are non-technical and usually don’t know what they want/can have.
✓ evolutionary prototyping
Iterate
Quick Design
Build Prototype
Customer Evaluation of
Prototype
Engineer Final
Product
(Ts.) SSS Shameem Software Engineering, MIU
A D V A N TA G E S
• Easy to fall back into code-and-fix without proper requirements analysis, design,
customer evaluation and feedback.
I T E R AT I V E D E V E L O P M E N T
• In practice, development is always iterative, and all activities progress in parallel.
• Plan to iterate your analysis, design and implementation.
• You won’t get it right the first time, so integrate, validate and test as frequently as possible
Implementation
Design
Design through refactoring
I N C R E M E N TA L B U I L D M O D E L
• Combines the elements of the waterfall model with the iterative philosophy of prototyping.
Iterative and incremental development is any combination of both iterative design or iterative
method and incremental build model for development.
In 1988 Boehm developed Spiral model as an iterative model which includes risk analysis and
risk management.
Key idea: on each iteration identify and solve the sub-problems with the highest risk.
Prototypes Operational
Review & Start P1 P2 P3 Prototype
commitment Requirements Concept
Design, Detailed design
plan Of Operation Validation
Development & Verification
plan Requirements
validation Coding
Integration &
Test plan Unit & Integration
Plan next phase Testing Develop & verify
End Acceptance
Testing next-level product
(Ts.) SSS Shameem Software Engineering, MIU
SPIRAL MODEL
Each cycle follows a waterfall model by:
• Determining objectives
• Specifying constraints
• Generating alternatives
• Identifying risks
• Resolving risks
• Realism: the model accurately reflects the iterative nature of software development
on projects with unclear requirements
• Flexible: incoporates the advantages of the waterfal and rapid prototyping methods
• focus on process adaptability and customer satisfaction by rapid delivery of working software product.
• Every iteration involves cross functional teams working simultaneously on various areas; Planning,
Requirements Analysis, Design, Coding, and Testing, etc
• At the end of iteration, a working product is displayed to the customer and important stakeholders
o adaptive planning,
• A conceptual framework
• 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.
• Usually work with detailed planning and have a complete forecast of the exact tasks and
features to be delivered in the next few months or during the product life cycle.
• entirely depend on the requirement analysis and planning done in the beginning of cycle.
• Any changes to be done, goes through strict change control management and prioritization.
• no detailed planning; and clarity on future tasks only on what features need to be developed.
• feature driven development, and team adapts to changing product requirements dynamically.
• product is tested very frequently through release iterations, minimizing risk of any major
failures in future.
(Ts.) SSS Shameem Software Engineering, MIU
A G I L E : A D V A N TA G E S
• An overall plan, an agile leader and agile PM practice is must without which it will not work.
• Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet
the deadlines.
• Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong
direction.
• There is a very high individual dependency, since there is minimum documentation generated.
• Transfer of technology to new team members may be quite challenging due to lack of documentation.
• Product Requirements and Specification • System and acceptance testing – check the
Analysis – complete specification of the entire software system in its environment
software system • Integration and Testing – check that modules
• Architecture or High-Level Design – defines interconnect correctly
how software functions fulfill the design • Unit testing – check that each module acts as
• Detailed Design – develop algorithms for each expected
architectural component • Coding – transform algorithms into software
• Emphasize planning for verification and validation of the product in early stages of
product development
• Easy to use
• Excellent choice for systems requiring high reliability – hospital patient control applications
S / W T E S T I N G L I F E C YC L E ( S T LC )
1 3
2
4
• SDLC
• STLC