0% found this document useful (0 votes)
51 views12 pages

Software Engineering Fundamentals at Assosa

A software process involves a set of related activities that lead to the production of software. There are four fundamental activities: specification, design/implementation, validation, and evolution. Processes describe activities, products, roles, and pre/post-conditions. Processes are complex and rely on people making judgments. Most organizations develop their own processes tailored to their capabilities and system characteristics.

Uploaded by

Dafuq Malone
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)
51 views12 pages

Software Engineering Fundamentals at Assosa

A software process involves a set of related activities that lead to the production of software. There are four fundamental activities: specification, design/implementation, validation, and evolution. Processes describe activities, products, roles, and pre/post-conditions. Processes are complex and rely on people making judgments. Most organizations develop their own processes tailored to their capabilities and system characteristics.

Uploaded by

Dafuq Malone
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

Assosa University College of Computing Department of Computer Science

A software process is a set of related activities that leads to the production of a software product.
These activities may involve the development of software from scratch in a standard programming
language like Java or C. However, business applications are not necessarily developed in this way.
New business software is now often developed by extending and modifying existing systems or
by configuring and integrating off-the-shelf software or system components.

There are many different software processes but all must include four activities that are
fundamental to software engineering:

1. Software specification. The functionality of the software and constraints on its operation
must be defined.
2. Software design and implementation. The software to meet the specification must be
produced.
3. Software validation. The software must be validated to ensure that it does what the
customer wants.
4. Software evolution. The software must evolve to meet changing customer needs.

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.
However, as well as activities, process descriptions may also include:

1. Products, which are the outcomes of a process activity. For example, the outcome of the
activity of architectural design may be a model of the software architecture.
2. Roles, which reflect the responsibilities of the people involved in the process. Examples of
roles are project manager, configuration manager, programmer, etc.
3. Pre- and post-conditions, which are statements that are true before and after a process
activity has been enacted or a product produced. For example, before architectural design
begins, a pre-condition may be that all requirements have been approved by the customer;

Fundamentals of Software Engineering 1


Assosa University College of Computing Department of Computer Science

after this activity is finished, a post-condition might be that the UML models describing
the architecture have been reviewed.

Software processes are complex and, like all intellectual and creative processes, rely on people
making decisions and judgments. There is no ideal process and most organizations have developed
their own software development processes. Processes have evolved to take advantage of the
capabilities of the people in an organization and the specific characteristics of the systems that are
being developed.

Software Development life cycle(SDLC)

Fundamentals of Software Engineering 2


Assosa University College of Computing Department of Computer Science

Fundamentals of Software Engineering 3


Assosa University College of Computing Department of Computer Science

Fundamentals of Software Engineering 4


Assosa University College of Computing Department of Computer Science

Software Development Paradigm (process model)

Fundamentals of Software Engineering 5


Assosa University College of Computing Department of Computer Science

Fundamentals of Software Engineering 6


Assosa University College of Computing Department of Computer Science

Fundamentals of Software Engineering 7


Assosa University College of Computing Department of Computer Science

Fundamentals of Software Engineering 8


Assosa University College of Computing Department of Computer Science

Fundamentals of Software Engineering 9


Assosa University College of Computing Department of Computer Science

Process assessment models

A software process assessment is a disciplined examination of the software processes used by an


organization, based on a process model. The assessment includes the identification and
characterization of current practices, identifying areas of strengths and weaknesses, and the ability
of current practices to control or avoid significant causes of poor (software) quality, cost, and
schedule.

A software assessment (or audit) can be of three types.

 A self-assessment (first-party assessment) is performed internally by an organization's


own personnel.

 A second-party assessment is performed by an external assessment team or the


organization is assessed by a customer.

 A third-party assessment is performed by an external party or (e.g., a supplier being


assessed by a third party to verify its ability to enter contracts with a customer).

Software process assessments are performed in an open and collaborative environment. They are
for the use of the organization to improve its software processes, and the results are confidential
to the organization. The organization being assessed must have members on the assessment team.

Software Process Maturity Assessment

The scope of a software process assessment can cover all the processes in the organization, a
selected subset of the software processes, or a specific project. Most of the standard-based process
assessment approaches are invariably based on the concept of process maturity.

When the assessment target is the organization, the results of a process assessment may differ,
even on successive applications of the same method. There are two reasons for the different
results. They are,

 The organization being investigated must be determined. For a large company, several
definitions of organization are possible and therefore the actual scope of appraisal may
differ in successive assessments.

Fundamentals of Software Engineering 10


Assosa University College of Computing Department of Computer Science

 Even in what appears to be the same organization, the sample of projects selected to
represent the organization may affect the scope and outcome.

When the target unit of assessment is at the project level, the assessment should include all
meaningful factors that contribute to the success or failure of the project. It should not be limited
by established dimensions of a given process maturity model. Here the degree of implementation
and their effectiveness as substantiated by project data are assessed.

Process maturity becomes relevant when an organization intends to embark on an overall long-
term improvement strategy. Software project assessments should be independent assessments in
order to be objective.

Software process metrics


Software metrics is a standard of measure that contains many activities which involve some
degree of measurement. It can be classified into three categories: product metrics, process metrics,
and project metrics.

 Product metrics describe the characteristics of the product such as size, complexity,
design features, performance, and quality level.

 Process metrics can be used to improve software development and maintenance.


Examples include the effectiveness of defect removal during development, the pattern of
testing defect arrival, and the response time of the fix process.

 Project metrics describe the project characteristics and execution. Examples include the
number of software developers, the staffing pattern over the life cycle of the software,
cost, schedule, and productivity.

Some metrics belong to multiple categories. For example, the in-process quality metrics of a
project are both process metrics and project metrics.

Scope of Software Metrics

Software metrics contains many activities which include the following −

Fundamentals of Software Engineering 11


Assosa University College of Computing Department of Computer Science

 Cost and effort estimation

 Productivity measures and model

 Data collection

 Quantity models and measures

 Reliability models

 Performance and evaluation models

 Structural and complexity metrics

 Capability – maturity assessment

 Management by metrics

 Evaluation of methods and tools

Software measurement is a diverse collection of these activities that range from models predicting
software project costs at a specific stage to measures of program structure.

Fundamentals of Software Engineering 12

Common questions

Powered by AI

Independent assessments are crucial for objective software project evaluations because they provide unbiased feedback on project processes and outputs . When assessments are conducted independently, it minimizes internal bias and conflict of interest, offering a clear and impartial view of the project’s strengths and weaknesses. This objectivity is key for validating processes, ensuring compliance with standards, and identifying genuine areas for process improvements, leading to more reliable and accurate assessments .

Pre-conditions and post-conditions serve as checkpoints in software processes to ensure quality control . Pre-conditions are requirements that must be satisfied before starting a process activity, ensuring that necessary inputs and approvals are in place. Post-conditions confirm that the outputs and results of a process activity meet the expected standards before moving into the next phase. This structured approach helps in managing risks, improving clarity, and ensuring that each stage of the process aligns with the desired outcomes .

Process metrics offer quantitative insights into the development and maintenance activities of software projects, which can highlight areas for improvement . By tracking metrics such as defect removal effectiveness, defect arrival rates, and fix process response times, organizations can identify bottlenecks and inefficiencies in the development process. Using these metrics allows for targeted enhancements, leading to reduced errors, increased productivity, better resource allocation, and overall process optimization .

Product metrics are pivotal in evaluating software characteristics such as size, complexity, design features, performance, and overall quality level . They provide a structured means to quantify aspects of the software, enabling comparisons against standards or previous iterations. By evaluating metrics like size or complexity, developers can predict maintenance challenges and optimize design choices. Furthermore, these metrics play a critical role in assessing performance and quality, allowing teams to ensure the product meets or exceeds the required standards for customer satisfaction .

Software process assessments can be divided into self-assessments, second-party assessments, and third-party assessments . Self-assessments are conducted internally and focus on providing insights into the organization's own processes. Second-party assessments involve external evaluation by the customer or stakeholders, aiming to provide an outsider's viewpoint on process effectiveness. Third-party assessments are done by an independent assessor to confirm the organization's compliance and capability for contractual engagements. All these assessments are purposed to identify strengths and weaknesses within processes, driving organizational improvement through targeted changes and process maturity .

Software specification defines what the software should do and the constraints on its operations, which establishes a clear framework and requirements for development . Software validation, on the other hand, ensures that the developed software meets these specifications and fulfills the users’ needs by checking that the final product matches intended functionality . Both are necessary because specification provides the target for development, while validation ensures that this target has been met, thereby guaranteeing customer satisfaction and functional correctness .

Structural and complexity metrics are vital in managing and developing software projects as they help in evaluating the intricacy of a software's design and architecture . By quantifying these aspects, managers can predict potential maintenance challenges, determine necessary resources, and identify critical areas needing oversight or simplification. These metrics inform decision-making around system design choices and anticipate development hurdles, enabling project teams to implement cost-effective and efficient strategies for project execution and future maintenance .

Process maturity is integral to long-term improvement strategies as it provides a framework for evaluating the capability and efficiency of an organization's processes . Maturity models assess the effectiveness of implemented processes and guide firms toward process optimization and enhancement. As organizations progress through various maturity stages, they can systematically improve processes, reducing defects and costs while enhancing quality, all of which contribute to sustainable long-term improvements and competitive advantages .

Software evolution is critical for adapting software to changing customer needs and technological advancements, ensuring its continued relevance and utility . As market dynamics and business environments evolve, software must be updated or modified to incorporate new features, improve performance, and fix issues. This continuous improvement process is essential to maintain customer satisfaction, as it aligns the software with current user requirements and enhances its competitive edge .

You might also like