NCTUCS 2013-Fall Introduction to Software ...
NCTUCS 2013-Fall Introduction to Software Engineering by Professor Feng-Jian Wang
Ch1 - Software & Software Engineering
- Open world computing—pervasive, distributed computing
- Ubiquitous computing—wireless networks
- Netsourcing(cloud)—the Web as a computing engine
- Open source—”free” source code open to the computing community (a blessing, but also a potential curse!)
- Data mining
- Grid computing
- Cognitive machines
- Software for nanotechnologies
The Software Process
A process is a collection of activities, actions, and tasks that are performed when some work product is to be created.
An activity strives to achieve a broad objective (e.g., communication with stakeholders) and is applied regardless of the application domain, size of the project, complexity of the effort, or degree of rigor with which software engineering is to be applied.
An action (e.g., architectural design) encompasses a set of tasks that produce a major work product (e.g., an architectural design model).
A task focuses on a small, but well-defined objective (e.g., conducting a unit test) that produces a tangible outcome.
A process framework establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. In addition, the process framework encompasses a set of umbrella activities that are applicable across the entire software process.
A generic process framework for software engineering encompasses five activities:
- Before any technical work can commence, it is critically important to communicate and collaborate with the customer and other stakeholders.
- The intent is to understand stakeholders’ objectives for the project and to gather requirements that help define software features and functions.
- The planning activity creates a “map” that helps guide the team as it makes the journey.
- The map—called a software project plan defines the software engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that will be required, the work products to be produced, and a work schedule.
- You create a “sketch” of the thing so that you’ll understand the big picture what it will look like architecturally, how the constituent parts fit together, and many other characteristics.
- If required, you refine the sketch into greater and greater detail in an effort to better understand the problem and how you’re going to solve it.
- A software engineer does the same thing by creating models to better understand software requirements and the design that will achieve those requirements.
- This activity combines code generation (either manual or automated) and the testing that is required to uncover errors in the code.
- The software (as a complete entity or as a partially completed increment) is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation.
These five generic framework activities can be used during the development of small, simple programs, the creation of large Web applications, and for the engineering of large, complex computer-based systems.
Software engineering process framework activities are complemented by a number of umbrella activities. In general, umbrella activities are applied throughout a software project and help a software team manage and control progress, quality, change, and risk. Typical umbrella activities include:
- Software project tracking and control — allows the software team to assess progress against the project plan and take any necessary action to maintain the schedule.
- Risk management — assesses risks that may affect the outcome of the project or the quality of the product.
- Software quality assurance — defines and conducts the activities required to ensure software quality.
- Technical reviews — assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity.
- Measurement — defines and collects process, project, and product measures that assist the team in delivering software that meets stakeholders’ needs; can be used in conjunction with all other framework and umbrella activities.
- Software configuration management — manages the effects of change throughout the software process.
- Reusability management — defines criteria for work product reuse (including software components) and establishes mechanisms to achieve reusable components.
- Work product preparation and production — encompasses the activities required to create work products such as models, documents, logs, forms, and lists.
Hooker’s General Principles
- The Reason It All Exists
- KISS (Keep It Simple, Stupid!)
- Maintain the Vision
- What You Produce, Others Will Consume
- Be Open to the Future
- Plan Ahead for Reuse
如果覺得這篇文章對你有幫助， 除了留言讓我知道外， 或許也可以考慮請我喝杯咖啡， 不論金額多寡我都會非常感激且能鼓勵我繼續寫出對你有幫助的文章。
If this blog post happens to be helpful to you, besides of leaving a reply, you may consider buy me a cup of coffee to support me. It would help me write more articles helpful to you in the future and I would really appreciate it.