You are on page 1of 3

SE - A Practitioner's Approach

Essential attributes of good software


1. Maintainability - Software should be written in such a way so that it can evolve to meet the changing
needs of customers. This is a critical attribute because software change is an inevitable requirement of a
changing business environment.
2. Dependability and security - Software dependability includes a range of characteristics including
reliability, security and safety. Dependable software should not cause physical or economic damage in
the event of system failure. Malicious users should not be able to access or damage the system.
3. 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.
4. Acceptability - Software must be acceptable to the type of users for which it is designed. This means
that it must be understandable, usable and compatible with other systems that they use.
A Layered Technology
Quality which fosters a continuous process improvement culture.
Process layer as the foundation defines a framework with activities for effective delivery of software
engineering technology. Establish the context where products (model, data, report, and forms) are
produced, milestones are established, quality is ensured and change is managed.
Method provides technical how-tos for building software. It encompasses many tasks including
communication, requirement analysis, design modeling, program construction, testing and support.
Tools provide automated or semi-automated support for the process and methods.
Five Activities of a Generic Process framework
Communication: communicate with customer to understand objectives and gather requirements
Planning: creates a map defines the work by describing the tasks, risks and resources, work products
and work schedule.
Modeling: Create a sketch, what it looks like architecturally, how the constituent parts fit together
and other characteristics.
Construction: code generation and the testing.
Deployment: Delivered to the customer who evaluates the products and provides feedback based on
the evaluation.
Umbrella Activities
Software project tracking and control: assess progress against the plan and take actions to maintain the
schedule.
Risk management: assesses risks that may affect the outcome and quality.
Software quality assurance: defines and conduct activities to ensure quality.
Technical reviews: assesses work products to uncover and remove errors before going to the next
activity.
Measurement: define and collects process, project, and product measures to ensure stakeholders
needs are met.
Software configuration management: manage the effects of change throughout the software process.
Reusability management: defines criteria for work product reuse and establishes mechanism to achieve
reusable components.
Work product preparation and production: create work products such as models, documents, logs,
forms and lists.

Prescriptive and Agile Process Models


The prescriptive process models stress detailed definition, identification, and application of process
activates and tasks. Intent is to improve system quality, make projects more manageable, make delivery
dates and costs more predictable, and guide teams of software engineers as they perform the work
required to build a system.
Agile process models emphasize project agility and follow a set of principles that lead to a more
informal approach to software process. It emphasizes maneuverability and adaptability. It is particularly
useful when Web applications are engineered.
Chapter 2
Social Learning Process
Software is embodied knowledge that is initially dispersed, tacit and incomplete.
In order to convert knowledge into software, dialogues are needed between users and designers,
between designers and tools to bring knowledge into software.
Software development is essentially an iterative social learning process, and the outcome is software
capital.
Process Flow
Linear process flow executes each of the five activities in sequence.
An iterative process flow repeats one or more of the activities before proceeding to the next.
An evolutionary process flow executes the activities in a circular manner. Each circuit leads to a more
complete version of the software.
A parallel process flow executes one or more activities in parallel with other activities (modeling for one
aspect of the software in parallel with construction of another aspect of the software.
Process Patterns
describes a process-related problem that is encountered during software engineering work,
identifies the environment in which the problem has been encountered, and
Suggests one or more proven solutions to the problem.
Process Pattern Types
Stage patternsdefines a problem associated with a framework activity for the process. It includes
multiple task patterns as well. For example: Establishing Communication would incorporate the task
pattern Requirements Gathering and others.
Task patternsdefines a problem associated with a software engineering action or work task and
relevant to successful software engineering practice
Phase patternsdefine the sequence of framework activities that occur with the process, even when
the overall flow of activities is iterative in nature. Example includes Spiral Model or Prototyping.
CHAPTER 3
The Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this
work we have come to value: by: Kent Beck et al
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.

What is Agility?
Effective (rapid and adaptive) response to change (team members, new technology, requirements)
Effective communication in structure and attitudes among all team members, technological and
business people, software engineers and managers
Drawing the customer into the team. Eliminate us and them attitude. Planning in an uncertain world
has its limits and plan must be flexible.
Organizing a team so that it is in control of the work performed
Eliminate all but the most essential work products and keep them lean.
Emphasize an incremental delivery strategy as opposed to intermediate products that gets working
software to the customer as rapidly as feasible.
Yielding
Rapid, incremental delivery of software
The development guidelines stress delivery over analysis and design although these activates are not
discouraged, and active and continuous communication between developers and customers.

You might also like