0% found this document useful (0 votes)
9 views47 pages

Software Development - L01

Software Development

Uploaded by

Alaa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views47 pages

Software Development - L01

Software Development

Uploaded by

Alaa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

Software Development and Professional Practice

Software Development and Professional Practice


L01: The Software Lifecycle

Dr. Nora Shoaip


Damanhour University
Faculty of Computers & Information Sciences
Department of Information Systems

2023

1
Outline

Course Overview
► What is software?
► What is a software process?
► What is a software process model?

2
What is software?

► Software includes computer programs (source code, executable,


byte-code … etc.) and associated documentation such as
requirements document, design document, user manuals … etc.
► New software can be produced from scratch, by configuring
generic software systems, or by reusing existing software

3
What is software?

► Software products may be


► Generic - developed to be sold to a range of different customers
Examples – PC software such as editing, graphics programs, project
management tools; CAD software; software for specific markets such
as appointments systems for dentists.
► custom - developed for a single customer according to their
specification
Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
► Embedded
► Built into hardware
► Hard to change

4
What is software?

► System software: such as compilers, editors, file management


► Application software: stand-alone programs for specific needs.
► Engineering/scientific : software: such as automotive stress analysis,
molecular biology, orbital dynamics etc
► Embedded software : resides within a product or system. (key pad
control of a microwave oven, digital function of dashboard display in a
car)
► Product-line : software focus on a limited marketplace to address
mass consumer market. (word processing, graphics, database
management)
► WebApps : (Web applications) network centric software: remote
database and business applications.
► AI software : Robotics, expert system, pattern recognition game
playing

5
Introduction: Software is Complex

► Complex  complicated
► Complex = composed of many simple parts
related to one another
► Complicated = not well understood, or explained

6
Software Development

Software Development
► refers to a set of computer science activities dedicated to the
process of creating, designing, deploying and supporting software.
► is the science and art of building significant software systems
that are:
1) on time
2) on budget
3) with acceptable performance
4) with correct operation

7
Software Developer vs. Software Engineer.

► Software developers design specific computer systems and


application software. Software engineers work on a larger scale
to design, develop, and test entire computer systems and
application software for a company or organization—software
development is a subset of software engineering.
► A software engineer may work with many different people on a
team, including other engineers and developers. Individuals
working in this role may also work with users to determine
software needs.
► Software developers work with other developers and
programmers on a limited basis. A lot of a developer's work
involves working with applications or operating systems more
than other people.

8
Programmer vs. Software Engineer

Programmer Software Engineer

 Individual with good skills  Part of a team


 Programming-in-the-small  Programming-in-the-large
 Knowledge on data  Knowledge on design
structures, databases, approaches
algorithms.  Translates requirements
 Fluent in one or more into specifications
programming languages  Familiarity in multiple
 May lack formal training application areas
 Minimal exposure to  Converses with users
computer science  Sees the “big picture” of
the software system
 Can model application
 Good communication and
interpersonal skills
9
Software Process and Process Model

► A software process is a set of activities, whose goal is the development


or evolution of a software product
► Four generic activities found in all software processes:
► Specification - what the system should do and the development
constraints imposed on the system
► Development - production of the software system
► Validation - checking that the software is what the customer
wants
► Evolution - changing the software in response to changing
demands
► Software process model is an abstract representation of a software
process, presented from a particular perspective; for example, workflow
(sequence of activities), data-flow, or role/action (who does what)
► Process models explain different approaches to software development

10
Software Process Key Challenges

► Heterogeneity: How to build software that works on different


platforms, that can integrate with older legacy systems which
are written in different programming languages
► Delivery: How to shorten the time it takes to deliver a finished
software product without compromising its quality
► Trust: How to develop techniques to demonstrate that
software can be trusted by its users

11
Professional and Ethical Responsibility

► Software Process involves wider responsibilities than just the


application of technical skills
► Software Process must behave in honest and ethically
responsible ways to be respected as professionals
► Ethical behavior is more than simply upholding the law

12
Issues of Professional Responsibility

► Confidentiality
► Always respect confidentiality of employers or clients,
even when there is no formal confidentiality agreement
► Competence
► Never misrepresent one’s level of competence. never
accept work beyond one’s level of competence
► Intellectual property rights
► Ensure that the intellectual property of employers and
clients is protected
► Be aware of local laws governing use of intellectual
property such as patents and copyright
► Computer misuse
► Never use technical skills to misuse other people’s
computers

13
Software Process

► A structured set of activities required to develop a


software system.
► Fundamental Assumption:
► Good processes lead to good software
► Good processes reduce risk

14
Software Process

► Phases and actions to build, deliver, evolve software product


► Objectives
► Construct programs from idea to completion
► Produce reliable, predictable, and efficient software
► Difficult to automate because:
► Software production is a highly intellectual activity
► Software development involves:
► Interactions of individuals from various
backgrounds
► Interface to OS, hardware, databases … etc.
► Process models focus on the software lifecycle emphasizing
the process from start to finish

15
Modeling Motivation

► Increase in application complexity and requirements has led to


separation between developers and users
► Software now targets users without “computer expertise”
► Higher level of quality and reliability is needed
► Software development needs to:
► Manage complexity in modern applications
► Provide detailed careful analysis of user requirements
► Major goals of a process model are to:
► Determine appropriate stages
► Establish transition criteria for progressing from one stage
to another

16
Software Process Models
Software Process Models

A software process model is an abstract representation of a process.


► The waterfall model
► Separate and distinct phases of specification and
development (product focused)
► Evolutionary development
► Specification, development and validation are interleaved
e.g. XP (Beck), increment driven
► Component-based software engineering
► The system is assembled from existing components.
► Spiral (Boehm)
► driven by risk analysis and mitigation

18
Waterfall Method

► Unidirectional, no way back finish this step before moving to the


next

Requirements

Design

Implementation

Testing
Waterfall
method Deployment &
Maintenance

19
Waterfall Model

► First appeared in late 1950s - popularized in the 1970s


► Describes a sequential linear flow among phases
► Output of one phase is input to next
► Many variants of waterfall model; on which software categories
influence these variants:
► Customized software for particular customer
► Customized software for company
► Generalized application for commercial market
► Software production companies
► Define outputs for each phase
► Define methods to be used to produce outputs

20
Waterfall Model – Requirements Specification

► Purpose: Identify required qualities of application


► People: Interactions between end-users and software engineers
► States the required qualities (what) not (how) attained
► Produces a Software Requirements Specification (SRS)
document
► Provide detailed requirements and constraints
► Includes user manual with screen mockups
► SRS document contains
► Functional requirements – what product does
► Non-functional requirements
► Reliability (available, secure, integrity, safety, …)
► Accuracy of results, performance, …
► Operating/physical constraints, portability, …

21
Waterfall Model – Design

► Purpose: Decompose system into modules


► People: Software engineers and managers
► Produces a design specification document containing a
description of software architecture
► Decomposition usually has two phases:
► Preliminary design
► Detailed design
► Design specifications document must follow some standard (e.g.,
company’s standard, software standard …).
► Design alternatives proposed and evaluated
► Multiple ways to solve problem
► Evaluate with respect to requirements specifications

22
Waterfall Model - Coding and Module Testing

► Purpose: Actual coding and testing of software modules


► People: Software engineers and their managers
► Programming-in-the small
► Alternatives decided in design phase implemented and evaluated
► Usage of company wide standards
► Program layout, comments and headers, naming
conventions …
► Module testing
► Other activities include
► Code inspection for adherence to standards
► Check for software qualities (performance)

23
Waterfall Model - Integration and System Testing

► Purpose: Assemble application from individual components and


test the system/sub-systems
► People: Software engineers, managers, end-users
► Programming-in-the large
► Collections of modules and entire system tested
► Incremental testing
► Black-box testing
► Alpha testing – test under realistic conditions with end-users
► Usage of company wide standards
► Methods of integration and test data design
► Documentation of tests and results

24
Waterfall Model - Delivery and Maintenance

► Purpose:
► Purpose: Application distributed to users and supported via
maintenance/evolution
► People: Software-delivery personnel, software engineers, end-
users
► Two-stage delivery
► Beta testing: selective group of expected end-users to
shake out all bugs in the developed software
► Bugs are taken care of and then software product
delivered to customers

25
Other Activities in Waterfall Model

► Documentation
► Waterfall model is document-driven
► Output of each phase must be documented
► Company standards dictate document format
► Verification
► Emphasized during module and system testing
► Appropriate verification occurs via reviews and code
inspection
► The main goal is to monitor application quality throughout
development process to discover/remove errors
► Management
► Configuration and version management
► Human resources (personnel and organization)

26
Waterfall Model Evaluation

► Contributions to understanding software processes


► Software development must be disciplined, planned, and
managed
► Implementation delayed until objectives clearly understood
► Characteristics of waterfall model
► Linear: From beginning to end without backtracking
► Rigid:
► Results of each phase completed before
proceeding to next phase
► Assumes requirements and specifications finalized
► Monolithic: All planning is oriented to single delivery date

27
Waterfall Model Evaluation
► Problems with waterfall model
► Forces project planning to occur after limited analysis
performed
► The difficulty of accommodating change after the process is
underway
► Verification of requirements specifications document
performed by customer which is not very effective
► Unrealistic to assume all requirements frozen before
development starts
► Users often don’t know exact requirements, particularly
earlier in the process
► Does not stress anticipating changes
► Enforces standards based on producing particular documents
at specific times
28
Waterfall Waterfall Model Evaluation

► Therefore, this model is only appropriate when the requirements


are well-understood and changes will be fairly limited during the
design process
► The waterfall model is mostly used for large systems engineering
projects where a system is developed at several sites

29
Waterfall Process Model with Feedback

Requirements
analysis and
specification

Design

50 %
Coding and
module testing

Integration and
Optional system testing
Paths
Delivery and 50 %
maintenance

30
Evolutionary Process Model

► Studies shows the effectiveness of methodologies that produce a


product twice
► First version is throwaway to provide means for users to
offer feedback on exact requirements
► Second version developed using waterfall
► Evolutionary or incremental approach
► Emphasizes stepwise development
► Flexible and non-monolithic
► Postpones parts of some stages
► Several different variants of evolutionary model exist

31
Evolutionary Process Model

► Evolutionary process model can be described as “model whose


stages consist of expanding increments of an operational software
product, with the direction of evolution being determined by
operational experience”
► Delivered increment: Self-contained functional unit that is useful to
the customer
► Includes supporting material (documents, test plans,
training materials, etc.)
► Development strategy
► Deliver something to the real user
► Measure added value to user
► Adjust design and objectives accordingly
► Use increments to evolve toward desired product

32
Incremental Implementation Model Variant

► Implementation done incrementally


► Requires analysis and design emphasis on useful, deliverable
subsets/flexible interfaces
► Different plans are implemented, tested, and delivered at different
times
► Incremental implementation is only a partial solution
► May be missing functional (e.g., buttons don’t work)
► May simulate portions (e.g., files instead of databases)

33
Incremental Development & Delivery Model

► Incremental approach applied to all waterfall phases


► Achieves finer granularity in the process
► Waterfall model followed for different portions
► Increments developed after user feedback
► Users can understand what they actually need
► All evolutionary approaches
► Incorporate maintenance into every stage of the model
► Employ evolutionary prototype that is progressively
transformed into final application
► Prototyping helps software engineers understand user
needs
► Requires tools such as VISIO, rapid GUI tools, etc

34
Waterfall Assessing Evolutionary Models

► Problems
► Large time gap between requirements specification and delivery
► Emphasis on user interface not on product
► May miss functional requirement
► May underestimate database complexity/interactions
► Requires tools to manage process
► Lack of process visibility
► Systems are often poorly structured
► Special skills (e.g. in languages for rapid prototyping) may be
required
► Advantages
► Product may closely follow user requirements
► Supports anticipation of change
► More flexible than waterfall model

35
Evolutionary Models Applicability
► For small or medium-size interactive systems
► For parts of large systems (e.g. user interface)
► For short-lifetime systems

36
Transformation Model

► Roots in formal specification that views software as steps to


transform specifications to implementation
► Internal requirements are analyzed and formally specified
► Formal specification transformed into detailed, less
abstract formal description
► Repeat step 2 until description is executable by some
abstract processor
► Further transformations may be needed to increase
efficiency
► Transformations may be performed manually by software
engineers or by automated support systems

37
Transformation Model

Decisions & rationale

Reusable
components

Formal Lower level


Requirements Requirements specifications
specifications Optimization
analysis and
specification

Verification Tuning

Recording of
developmental history

38
Transformation Model

► Two main stages


► Requirements analysis for formal requirements
► Optimization for performance tuning
► Transformation controlled by software engineering
► Take advantage of reusable components
► Verify against user expectations
► Supported by software tools
► Tools for requirements verification, managing
reusable components, optimizing, configuration
management.
► Transformation model studied for small programs to
mathematically prove correctness

39
Spiral Model

► Purpose: Provide a framework for design production process


guided by risk levels
► Guiding principles: Level of risk (potential adverse circumstance)
► Risk management: “Discipline whose objectives are to identify,
address, and eliminate software risk items before they become
either threats to successful software operation or a major source
of expensive software rework.”
► Focus: mainly on identifying and eliminating high risk problems by
careful process design/assessment

40
Spiral Model

► Cyclical model is four stages:


► Identify objectives and design alternatives
► Evaluate alternatives and identify/deal with potential risks
► Develop and verify next level product
► Review results and plan for next iteration
► Allows unstated requirements to become part of specification of
next cycle
► Robustness approximates correctness more closely

41
The Spiral Model

42
The Spiral Model

43
Waterfall Model - Coding and Module Testing

► Purpose:

44
Waterfall Model - Coding and Module Testing

► Purpose:

45
Waterfall Model - Coding and Module Testing

► Purpose:

46
Waterfall Model - Coding and Module Testing

► Purpose:

47

You might also like